php - 如何在 Laravel 4 的 Eloquent ORM 中使用 IN 或 Nesting of queires

标签 php mysql laravel laravel-4 eloquent

我正在将现有的 Twitter 克隆玩具项目转换为 Laravel 4。我之前使用过 codeigniter 框架,Eloquent ORM 是我接触过的第一个 ORM。 所以我对如何进行一些预先查询感到困惑, 以下查询是获取所有由 current_user 关注的 users 创建的 posts。此存储过程片段工作正常。

BEGIN
SELECT 
      tbl_users.id              as user_id, 
      tbl_users.display_name,
      tbl_users.username,
      tbl_posts.id              as post_id, 
      tbl_posts.post_text, 
      tbl_posts.`timestamp`
FROM tbl_posts , tbl_users
WHERE tbl_posts.user_id IN (
    SELECT tbl_followers.destination_user_id FROM tbl_followers
    WHERE  tbl_followers.source_user_id = xSource_user_id  
    )
AND tbl_posts.user_id = tbl_users.id 
ORDER BY tbl_posts.id DESC
LIMIT xLimit;

END

表结构如下:

用户 : (id)

帖子 : (id,src_user_id [FK], post_text )

关注者:(id,dest_user_id [FK],src_user_id [FK])

我最好的猜测是:

    Post::where('user_id', 'IN' , Follower::where('from_user_id','=','1'))->toSql();

我已将以下关系添加到用户模型

public function posts()
{
    return $this->hasMany('Post');
}

public function followers()
{
    return $this->hasMany('Follower');
}

最佳答案

您需要使用 lists() 来获取数组形式的结果

    Post::whereIn('user_id', Follower::where('from_user_id','=','1')->lists('id'))->toSql();

关于php - 如何在 Laravel 4 的 Eloquent ORM 中使用 IN 或 Nesting of queires,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20598001/

相关文章:

php - 在 php5-fpm 未被杀死并重新启动之前,符号链接(symbolic link)不会更新

php - Azure 上的 Laravel 应用程序 : Access denied for user 'azure' @'localhost'

php - 在 CakePHP 中编辑创建新条目而不是更新旧条目

mysql - Highcharts json 每日图表

php - Laravel 集合 - 扁平化不起作用

javascript - Jquery:将值数组从一个数组输入传递到另一个数组输入字段

php - refresh = on submit in php,如何解决?

php - 网站大,用户多,如何唯一识别用户

php - Codeigniter session 类禁用特定 Controller

php - Codeigniter 重定向不在相对重定向中保留 HTTPS