我的mysql查询行有些不对劲

时间:2015-03-31 02:08:35

标签: php mysql laravel-4 eloquent

我有这个Laravel 4.2 Eloquent Query

$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();

数据库: enter image description here

它应该返回一些内容,Newsfeed Table中有数据但是 结果是没有,它是空的。

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

但是,当我这样做时:

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

返回结果,没有限制并跳过。

2 个答案:

答案 0 :(得分:0)

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

DD($朋友 - > added_user)

您将在数组中看到$m个用户对象。但是,在您的查询中,我需要的是user_id的{​​{1}}。

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

  

$ m [] = $ friend-> added_user() - > first() - > user_id; //这取决于你的added_user返回什么,如果它返回一个数组,你应该循环它以获取所有id或使用added_user来获取user_id数组

希望有所帮助

答案 1 :(得分:0)

这样可以解决问题:

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