2016-07-12 10 views
0

müssen Daten aus der Statustabelle in Sicht bekommen. Versucht, Alias ​​zu setzen, googelte über 3 Stunden, ich bin verloren. Irgendwelche Ideen wie?Zwei Tabellen verbinden Daten, die in Laravel zur Ansicht gelangen

Controler Code:

$action= DB::table('actionplan') 
    ->join('status','actionplan.status','=','status.id') 
    ->select('status.name as testas','actionplan.*') 
    ->where([['user_id','=',$name],['done','<>',1]])->get(); 

anzeigen Code:

@foreach($teams as $item) 
<th scope="row">1</th> 
<td>{{$item->name}}</td> 
<td>{{$item->start_date}}</td> 
<td>{{$item->end_date}}</td> 
<td>{{$item->comment}}</td> 
<td>{{$item->status()->name}}</td> 
+2

Erstellen Sie Beziehungen zwischen Modellen, und es wird einfacher sein hasMany, hasOne, belongsTo usw. – Poria

+0

@Poria Ich sehe keine Modelle hier. – apokryfos

+0

Ihr Code zeigt Ihnen, wie Sie einen Alias ​​definieren, aber Sie scheinen ihn nicht zu verwenden. Es sollte '{{$ item-> testas}}' ' – apokryfos

Antwort

0

Sie sollten wirklich Modelle für die Datenbanktabellen implementieren. Obwohl dies nicht der Ratschlag ist, den Sie wünschen, wird dies Ihre Fragen in dieser Hinsicht erheblich vereinfachen.

Ihr ActionPlan.php Modell:

use Illuminate\Database\Eloquent; 

class ActionPlan extends Model 
{ 
    protected $table = 'actionplan'; 

    public function status() 
    { 
     return $this->hasOne(App\Status::class, 'id', 'status'); 
    } 
} 

Ihr status.php Modell:

use Illuminate\Database\Eloquent; 

class Status extends Eloquent 
{ 
    protected $table = 'status'; 
} 

Ihre Suche:

$actions = Action::whereHas('status') 
    ->where('user_id', '=', $name) 
    ->where('done', '<>', 1) 
    ->get(); 

Oder:

$actions = Action::whereHas('status') 
    ->whereUserId($name) 
    ->having('done', '<>', 1) 
    ->get(); 
Verwandte Themen