我的 mysql 查询行出了点问题

somethings wrong with my mysql query line

我有这个Laravel 4.2Eloquent查询

$m[]     = Auth::user()->id;
foreach ($friends as $friend) {
    $m[] = $friend->added_user;
}

$news = NewsFeed::whereIN('user_id', $m )->take($limit)->skip($offset)->get();

实际查询:

$news = NewsFeed::whereIN('user_id', array( 'CUS_6367VkCX5i243656TwM3', 'CUS_G530t786S1GVwlcJ3Nw1', 'CUS_xks5oi3dy2C0sa02usD2' ) )->take(10)->skip(5)->get();

数据库:

它应该 return 一些东西,Newsfeed Table 里面有数据但是 结果是 none,它是空的。

我的 Laravel 4.2 Eloquent 查询有什么问题?

但是当我这样做时:

$news = NewsFeed::whereIN('user_id', $m )->get();

它return是一个结果,没有限制,跳过。

看来 $m[] = $friend->added_user; 是你出错的地方

dd($friend->added_user)

您将在数组中看到 $m 个用户对象。但是,在您的查询中,需要的是 added_useruser_id

在这种情况下,您应该修改如下:

$m[] = $friend->added_user()->first()->user_id; //it depends on what your added_user returns, if it returns an array, you should loop over it to get all ids or use ->lists('user_id') to get an array of user_id

希望对您有所帮助

这样做就可以了:

$news = DB::select( DB::raw(" SELECT * FROM `news_feed` WHERE `user_id` IN ('CUS_6367VkCX5i243656TwM3', 'CUS_G530t786S1GVwlcJ3Nw1', 'CUS_xks5oi3dy2C0sa02usD2') LIMIT 5, 5 ") );