php - 将具有匹配 ID 的表中的数据获取到 Laravel 中的数据透视表

标签 php mysql laravel

我有 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/

相关文章:

php - Laravel 中的模板

laravel - 使用自定义包的配置文件而不在 Laravel 5 中发布。*

php - 如何通过 POST 而不是 ajax 提交数据对象

mysql - 对 mysql 结果进行排序。按 col1 排序,按 col2 分组

php - 新数据库导入,mysql_insert_id() 返回 0

c# - 在 C# 和 Mysql 中使用预处理语句

mysql - 查询中的 Pentaho Report Designer 错误

laravel - 未定义的类常量 'App\Providers\RouteServiceProvider::HOME'

php - 在 Excel 中始终显示指定的小数位数

PHP MySQL : COUNT/SUM a non integer column with different values