gpt4 book ai didi

php - Laravel Join 返回奇数

转载 作者:行者123 更新时间:2023-11-29 01:56:26 25 4
gpt4 key购买 nike

刚刚在我的 Join 查询中遇到了一个错误。

我在 foreach 中输出数据,并显示用户名。在其他页面上,它工作正常,每个用户名都与行中 ID 中的用户名相匹配。但是,在下面的示例中,返回的用户名始终是登录用户的名称。

希望下面的内容更有意义。谢谢。

查询是:

$query = DB::table('blogs')
->join('followers', 'blogs.id', '=', 'followers.blogid')
->where('followers.userid', Auth::user()->id)
->where('frontpage', '1')
->latest('lastupdated');

这是通过以下方式调用的:

Route::get('following', array('before' => 'auth', function()
{
$slug = Route::getCurrentRoute()->uri();
$builds = Blog::findBuilds($slug);
return View::make('pages/home', compact('builds'), array('pageTitle' => 'Builds You Are Following'));
}));

然后在页面/主页上,我会像这样显示数据:

foreach ($builds as $build)
{
$usernameOfOwner = User::usernameFromID($build->userid);
}

然后...从 ID 获取用户名的函数是:

public static function usernameFromID($id) {
$user = DB::table('users')->where('id', $id)->first();
return $user->username;
}

当我运行类似于顶部查询但不是连接的查询时,我网站上的其他任何地方,例如:

$query = static::where('frontpage', '1')->latest('lastupdated');

它工作正常,所以我唯一的猜测是它归结为 Join,因为那是代码中唯一不同的部分。

最佳答案

问题是您有多个名为 userid 的列。 followers.useridblogs.userid。现在在这种情况下,不幸的是 followers.userid 在您使用 $build->userid

时被返回

您可以通过仅选择结果中所需的列来更改它。

$userid = Auth::user()->id;
$query = DB::table('blogs')
->join('followers', function($q) use ($userid){
$q->on('blogs.id', '=', 'followers.blogid');
$q->where('followers.userid', '=', $userid);
})
->select('blogs.userid', 'other-column')
->where('frontpage', '1')
->latest('lastupdated');

顺便说一句:* 也可以,所以如果你愿意,你可以执行 select('blogs.*')

关于php - Laravel Join 返回奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27697779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com