2017-04-12 2 views
0

I Laravel 5.3Wie erhalten Sie alle Zeilen (ohne Soft gelöscht) aus einer Tabelle in Laravel?

ich diese verwenden verwenden: https://github.com/jenssegers/laravel-mongodb

Meine Laravel eloquent ist wie folgt:

$data = Employee::select('id', 'name', 'salary', 'description') 
       ->find($id); 

Mein Modell ist wie folgt:

<?php 
namespace App\Models; 
use Eloquent as Model; 
use Illuminate\Database\Eloquent\SoftDeletes; 
use Jenssegers\Mongodb\Eloquent\Model as Eloquent; 
use Jenssegers\Mongodb\Eloquent\HybridRelations; 
class Employee extends Eloquent 
{ 
    use HybridRelations; 
    use SoftDeletes; 
    protected $connection = 'mongodb'; 
    public $table = 'employees'; 
    protected $dates = ['deleted_at']; 
    ... 
} 

Das Problem ist, Wenn sie ausgeführt wird, erscheinen die gelöschten Elemente dort. Was ist falsch?

+0

Sie müssen sie in – AshokGK

+0

@Panda Auswahl auszuschließen, Was meinen Sie? –

+0

Haben Sie die $ table-> softDeletes() in Ihrer Migration hinzugefügt? – stefansixx1

Antwort

2

Sie verwenden den falschen Zug use Illuminate\Database\Eloquent\SoftDeletes; nur für die Laravel Eloquent Modelle arbeitet.

Für Jenssegers \ MongoDB Sie verwenden müssen:

use Jenssegers\Mongodb\Eloquent\SoftDeletes; 
+0

Vielen Dank. Es klappt –

0

Sie können die toArray() Methode in Employee Klasse überschreiben.

function toArray() { 
    return [ 
     'id'  => $this->id, 
     'name'  => $this->name, 
     'salary' => $this->salary, 
     ...etc // dont put deleted_at here 
    ] 
} 
+0

Ich hatte es hinzufügen. Aber es funktioniert nicht. Die weichen gelöschten Elemente erscheinen immer noch dort –

+0

versuchen Sie es: '$ data = Employee :: find ($ id)' ohne die 'select' –

+0

Es ist das gleiche. Es funktioniert nicht. ToArray-Methode für was verwendet? –

Verwandte Themen