Eloquent模型的地方

时间:2015-05-14 02:07:26

标签: php laravel laravel-4

在Laravel,我有两张桌子:

帖子表:

╔════╦══════════════╦══════╗
║ ID ║  CONTENT     ║USERID║
╠════╬══════════════╬══════╣
║  1 ║ Lorem 1      ║  1   ║
║  2 ║ Lorem 2      ║  3   ║
║  3 ║ Lorem 3      ║  1   ║
║  4 ║ Lorem 4      ║  2   ║
╚════╩══════════════╩══════╝

用户表:

╔════╦════════════════╗
║ ID ║  EMAIL         ║
╠════╬════════════════║
║  1 ║user1@email.com ║
║  2 ║user2@email.com ║
║  3 ║user3@email.com ║
║  4 ║user4@email.com ║
╚════╩════════════════╝

我想使用Laravel选择用户ID发布的所有帖子。 发布,用户模型:

#Post Model
class Post extends \Eloquent {
    public function user()
    {
        return $this->belongsTo('User', 'userid');
    }
}

#User Model
class User extends \Eloquent {
    public function post()
    {
        return $this->hasMany('Post');
    }
}

现在,我选择使用Laravel Eloquent:

$post = Post::with(array(
    'user'  =>  function($query)
    {
        $query->where('email', Input::get('email'));
    }
))->paginate(10);

此代码将选择所有帖子,而不是用户和分页错误页面。 有人可以帮帮我吗? 非常感谢!

1 个答案:

答案 0 :(得分:1)

您正在寻找whereHas方法:

$posts = Post::whereHas('user', function($query)
{
    $query->where('email', Input::get('email'));

})->paginate(10);