laravel5.1使用eloquent检索嵌套关系

时间:2016-01-20 09:24:09

标签: php eloquent laravel-5.1 belongs-to

我的桌面设计是:

用户:| id |用户名| ...

门票:| id | supp_id | ...

ticket_replies:| id | ticket_id | user_id

我的控制器看起来像:

用户:

public function tickets()
{
    return $this->hasMany('App\ticket');
}

票:

public function ticket_replie()

    {
        return $this->hasMany('App\ticket_replie');
    }

public function supp_id()
{
    return $this->hasOne('App\User', 'id','supp_id');
}

我的控制器看起来像这样:

$tickets =  Auth::user()->tickets()->orderBy('status', 'desc')->paginate(2);

return view('protected.ticketsList', [ 
    'tickets' => $tickets,
    ]);

在我看来,我使用:

 @foreach ($tickets as $ticket)

    <br>
    <br>
    ID: {{$ticket->id}}
    title: {{ $ticket->title}}<br>
    status: {{ returnStatus($ticket->status) }}<br>

     @if($ticket->supporter = null)
        supporter: -<br>
     @else
        supporter: {{ $ticket->supp_id()->username }}
     @endif

    created: {{ $ticket->created_at }}<br>
@endforeach

知道我哪里做错了吗?我总是得到这个错误:

尝试获取非对象的属性(查看:C:\ xampp \ htdocs \ projekt \ resources \ views \ protected \ ticketsList.blade.php)

在我看来,表本身之间的关系是正确完成的。

2 个答案:

答案 0 :(得分:1)

问题出在以下几行:

supporter: {{ $ticket->supp_id->username }}

您尝试从属性(非对象)username获取属性supp_id,尝试使用括号()来引用方法supp_id()和不属性supp_id

supporter: {{ $ticket->supp_id()->username }}

注意:您应该将foreach循环放在@else子句中。

希望这有帮助。

答案 1 :(得分:0)

对于初学者,我认为你的观点应该是这样的,所以如果有的话,你只能遍历票。

1.) /web is the directory where is  表 folder and some other folders.
2.) $result[21] is giving me value 表 on browser i know its 表 folder.
3.) Now you have file path. Go ahead.