我有 3 个表,用户表、图像表和收藏夹表,它的工作方式有点像数据透视表,因为它只有 ID、image_id 和 user_id。
在我的用户模型中,我有:
public function FavoritedByMe() {
return $this->hasMany('CommendMe\Models\Favorite', 'user_id');
}
在我的收藏夹 Controller 中,我有:
public function getFavorites($username) {
$user = User::where('username', $username)->first();
return view('user.favorites')
->with('user', $user);
}
如果我想获取我收藏的所有图片的 ID,这就很好用了:
@foreach ($user->FavoritedByMe as $favorite)
{{ $favorite->image_id }}
@endforeach
但是,我真正希望能够返回带有图像本身的 View 。像这样的东西:
$favImages = Images::where('id', $user->FavoritedByMe->image_id);
return view('user.favorites')
->with('user', $user)
->with('favImages', $favImages);
现在显然这行不通,并且会返回错误:
ErrorException in FavoritesController.php line 54: Undefined property: Illuminate\Database\Eloquent\Collection::$image_id
但也许某种 Eloquent 关系会?我试过让这些工作正常,但它们就是不会在我的脑海中“咔嗒”一声。
我怎样才能使它工作?
提前致谢!
最佳答案
在您的Favorite
模型中添加此关系:
public function image()
{
return $this->belongsTo('YourImageModel');
}
然后你可以像这样访问图像:
@foreach ($user->FavoritedImages as $favorite)
{{ $favorite->image->yourProperty }}
@endforeach
在 laravel 的最佳实践中,你应该调用你的 FavoriteByMe
关系 favorites
因为它显然与用户相关。
关于php - 将具有匹配 ID 的表中的数据获取到 Laravel 中的数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41059388/