Laravel雄辩的关系不适用于刀片模板中的foreach

时间:2017-09-19 06:06:40

标签: php laravel eloquent laravel-5.4 laravel-eloquent

我有像

这样的用户Eloquent模型
class Users extends Model {

    public function branch() {
       return $this->hasOne(Branch::class, 'id', 'branch_id');
    }

    public function employee() {
       return $this->hasOne(Employee::class, 'id', 'employee_id');
    }
}

当我在控制器中跑步时,它就像一个魅力:

foreach(Users::all() as $user)
    dump($user->employee->first_name)
endforeach

但是,我想在Blade.php中运行相同的代码

@foreach($users as $user)
    <tr>
        <td>{{$user->id}}</td>
        <td>{{$user->employee->first_name}}</td>
    </tr>
@endforeach

上面的代码为我提供了尝试获取非对象的属性错误。

有人可以帮助我吗?

我甚至尝试过

$users = Users::with('employee')->with('branch')->get();

仍然没有运气。

**更新1 **

这是收藏的截图 Collection

4 个答案:

答案 0 :(得分:1)

我猜有些用户在employee表中没有数据,因此抛出.check是否 $user->employee->first_name isset

@foreach($users as $user)
    <tr>
        <td>{{$user->id}}</td>
        <td>{{(isset($user->employee->first_name)?$user->employee->first_name:''}}</td>
    </tr>
@endforeach

答案 1 :(得分:1)

此问题可能是您在$users中正常工作时覆盖controller,如果您使用了引导方法,请查看AppServiceProvider.php文件。

例如:

AppServiceProvider.php

中的

public function boot()
{

    View::composer('*', function($view){
        $view->with('users', ...);
    });

}

尝试将$users转储到您的刀片文件中,如

{{ dump($users) }}

答案 2 :(得分:0)

我遇到了相同类型的问题,但与操作有所不同。

如果有人遇到此问题,则当您在关系上运行foreach时,请尝试添加-> get() 例如:

@foreach($user->transactions()->get() as $transaction)

答案 3 :(得分:-2)

你应该试试这个:

@foreach($users as $user)
    <tr>
        <td>{{$user->id}}</td>
         @foreach($user->employee as $employee)
           <td>{{$employee->first_name}}</td>
         @endforeach
    </tr>
@endforeach