2016-01-13 56 views
0

我想解决以下问题: 我有3个表:passport,statuses和passport_statuses,(passport_statuses表是由于许多到许多护照和状态之间的关系而形成的枢轴表。模型如下图所示: 护照模型laravel,显示来自另一个表的数据

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Passport extends Model 
{ 
    protected $fillable=[ 
'Full_Name', 
'Date_of_Birth', 
'Passport_Number', 
'comments', 
'Delivered_to_owner' 
    ]; 


public function status() 
{ 

    return $this->belongsToMany('App\Statuses',"passport_statuses","passport_id","statuses_id")->withTimestamps(); 

} 

public function LatestStatus($query) 
{ 

    //dd($this->status[0]); 
    $allStatus=$this->status()->orderBy('updated_at')->first(); 
    dd($allStatus); 
    //return $allStatus[0]->Status_Name; 
    //dd($allStatus[0]->attributes["Status_Name"]); 
    //dd($this->status()->get()); 
    //return $allStatus[0]->attributes["Status_Name"]; 
    //dd($allStatus); 
} 

} 

以下状态模型

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Statuses extends Model 
{ 
protected $fillable=[ 
'Status_Name' 

]; 

public function passport() 
{ 
    return $this->belongsToMany('App\Passport')->withTimestamps(); 
} 
} 

passportstatus模式

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class PassportStatus extends Model 
{ 
protected $fillable=[ 
'passport_id', 
'statuses_id' 
]; 
} 

所以我能够保存数据透视表护照状态。现在我试图在索引页面显示该护照的最新状态index page snapshot

saving passport details

我的索引视图

@extends('admin.adminmaster') 
@section('content') 
<h2>Passport list </h2> 
<a class="btn btn-primary" href="passport/create" role="button">+ Add New Passport</a> 
<hr> 
<table style="width:100%"> 
<tr> 
    <th>Name</th> 
    <th>Passport Number</th> 
    <th>Status</th> 
</tr> 
@foreach($passports as $passport) 
<tr> 
<td><a href="{{action('[email protected]',[$passport->id])}}"><h4> {{$passport->Full_Name}}</h4></a></td> 

<td>{{$passport->Passport_Number}}</td> 

{{--<td>{{dd($passport->status())}}</td>--}} 
<td><a class="btn btn-warning" href="{{action('[email protected]',      [$passport->id])}}" role="button">Edit</a> 
    <td><a class="btn btn-danger" href="{{action('[email protected]',[$passport->id])}}" role="button"><span class="glyphicon glyphicon-trash"></span> Delete</a> 
</td> 
    </tr> 
    @endforeach 
    </table> 
    @endsection 

控制器

public function index() 
    { 
    $passports=Passport::latest()->get(); 
    return view('admin.passport.index')->with('passports',$passports); 
    } 
public function create() 
    { 
     $statuses=Statuses::lists('Status_Name','id'); 
    return view('admin.passport.create')->with('statuses',$statuses); 
    } 
public function store(Request $request) 
    { 
$passport=Passport::create($request->all()); 


$passport->status()->attach($request->input('Status_Name')); 
    return redirect('admin/passport'); 
} 
public function show($id) 
{ 
    $passports=Passport::findorFail($id); 

    return view('admin.passport.show')->with('passports',$passports); 
} 
+1

什么问题? – patricus

+0

嗨,我能够获得索引页面中的姓名和护照号码,但不是状态。 – user3810794

+0

护照可以同时拥有多种不同的身份吗? – patricus

回答

0

您可以添加一个功能,您的模型,获得最新的状态,然后你可以使用那个fu在你的看法内部。这个新功能不是一个新的关系,它只是一个标准功能。

class Passport extends Model 
{ 
    public function status() { 
     return $this->belongsToMany('App\Statuses',"passport_statuses","passport_id","statuses_id")->withTimestamps(); 
    } 

    // this is not a relationship. just a standard method on the model. 
    public function latestStatus() { 
     return $this->status()->latest()->first(); 
    } 
} 

在你看来:

<td>{{ $passport->latestStatus()->Status_Name }}</td> 
+0

解决了它。谢谢 – user3810794

相关问题