我有像
这样的用户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 **
答案 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