【问题标题】:Laravel Eloquent joins between tables unrelated?Laravel Eloquent 在不相关的表之间连接?
【发布时间】:2014-11-13 09:33:28
【问题描述】:

我遇到了问题。我有两个独立的数据库,一个用于电影,一个用于追随者。这样电影就可以有特定的电影数据(标题、图像、导演)等,然后我有一个跟随表,以便用户可以跟随电影。基本上这只是一个交叉表,里面只有 id、userID、filmID。这通常用于如果用户进入电影页面,它会检查记录是否存在,如果存在,它会检查 x,y,z。

现在在用户页面上,我试图列出他们关注的所有内容。所以目前我可以说。

    $following = Follow::where('userId', '=', $user->id)->orderBy('created_at', 'DESC')->get();

这将返回用户关注的所有内容。但是我的问题是我不想显示电影 ID,我想显示图片、标题、导演等。但是,该信息在电影表中。那么我怎么能说做一个调用来获取所有 Follow 实例但也获取附加到它的电影行。这样我就可以走了。 echo $following->title 它将显示电影标题。谢谢

【问题讨论】:

  • 那么加入吗? Follow::where('userId', '=', $user->id)->join('film', 'film.id', '=', 'follow.filmId')老实说,这种语法比只做sql要混乱得多...forumsarchive.laravel.io/viewtopic.php?id=3490
  • 所以我这样做了,但现在 $following->title 方法不太有效。就像我 var dump $following all the data is together and they, but I must have to access it different?

标签: php mysql sql laravel eloquent


【解决方案1】:

这就是我最终解决它的方式,这允许 $myquery->attribute 的相同过程而不会超级复杂。

    $followingUsers = Follow::where('userId','=', $user->id)->get();
    $followingFilms = Follow::where('userId','=', $user->id)->get();
    $followedFilms = new stdClass();
    $i = 0;
    foreach ($followingFilms as $follow)
    {
        $followedFilm = new stdClass();
        $film = Film::where('id','=', $follow->filmId)->first();
        $followedFilm->title = $film->title;
        $followedFilm->coverUrl = $film->image;
        $followedFilm->slug = $film->slug;
        $followedFilm->id = $film->id;
        $followedFilms->$i = $followedFilm;
        $i++;
    }

这会获取跟随表的每个对象,发出 sql 请求以获取信息,然后将其全部编译为对象 $followedFilms。

【讨论】:

  • 伙计,所有这些在 sql 中你所要做的就是SELECT * FROM followingUsers f STRAIGHT_JOIN followingFilms ff ON ff.id=f.filmId;Granted,我会以不同的格式设置它。包括它来自哪个数据库等等。但我真的不明白为什么会存在......
猜你喜欢
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
  • 2019-12-06
  • 1970-01-01
  • 2019-09-06
  • 1970-01-01
相关资源
最近更新 更多