我试图获取用户的照片src,该照片存储在photos表中,照片id存储在users'表中。我的代码-我已经在我的用户模型中写下了这些行
型号-用户
public function photo() {
return $this->belongsTo(Photo::class);
}
和我打印照片的代码src-
Route::get("/photo",function() {
$users = User::all();
foreach($users as $user) {
echo $user->photo->file . "<br>";
}
});
它显示了一个错误-尝试获取非对象的属性"file">
另一方面,我有同样的关系绑定,效果很好-在用户模型-中
public function role() {
return $this->belongsTo(Role::class);
}
以及用于打印用户的角色名称-
Route::get("/photo",function() {
$users = User::all();
foreach($users as $user) {
echo $user->role->name . "<br>";
}
});
因此,如果角色名称以这种方式打印,为什么照片src不打印
使用Model关系时,需要在User::all()->with()
方法中调用它。
无论你的关系是什么,它的名字都会在with()
方法中被调用,以便正确地获得所需的数据。
考虑到关系船做得很好,你可以这样做:
模型用户与照片有以下关系:
public function photo() {
return $this->hasMany(Photo::class);
}
模型照片与用户有以下关系。
public function user(){
return $this->belongsTo(User::class);
}
之后,您可以在控制器中调用它
public function get_photo(){
$users = User::all()->with('photo');
return view('example.blade.php,compact('users'));
}
路线
Route::get('/photo',[Controller::class,'get_photo'])->name('get.photo');
查看
你的视图可以有foreach循环来迭代照片
foreach($users as $user) {
echo $user->photo->file . "<br>";
}