Mysql 加入表后,从数据库中选择特定数量的随机行-Laravel 5.1

Mysql 加入表后,从数据库中选择特定数量的随机行-Laravel 5.1,mysql,laravel,eloquent,Mysql,Laravel,Eloquent,嗨,我的数据库结构如下: $randomArticles = Article::select("articles.*") ->join('categories', 'categories.id', '=', 'articles.category_id') ->join('domain_category', 'domain_category.category_id', 'categories

嗨,我的数据库结构如下:

$randomArticles = Article::select("articles.*")
                        ->join('categories', 'categories.id', '=', 'articles.category_id')
                        ->join('domain_category', 'domain_category.category_id', 'categories.id')
                        ->where('domain_category.domain_id', $domain->lander_domain_id)
                        ->orderBy(DB::raw('RAND()'))->take(8)->get();
表:文章

表:类别

表:领域类别

现在从上表开始。我只需要从表文章中8个随机行,其中domain\u id=$dynamic\u domain\u id

我所做的尝试如下:

$randomArticles = Article::select("articles.*")
                        ->join('categories', 'categories.id', '=', 'articles.category_id')
                        ->join('domain_category', 'domain_category.category_id', 'categories.id')
                        ->where('domain_category.domain_id', $domain->lander_domain_id)
                        ->orderBy(DB::raw('RAND()'))->take(8)->get();

但是我得到了一个错误,没有得到正确的结果。提前感谢。

我注意到的唯一语法错误是,您在第二次
join()
函数调用中缺少一个
'='
参数。请尝试改用此查询:

$randomArticles = Article::select("articles.*")
                        ->join('categories', 'categories.id', '=', 'articles.category_id')
                        ->join('domain_category', 'domain_category.category_id', '=', 'categories.id')
                        ->where('domain_category.domain_id', $domain->lander_domain_id)
                        ->orderBy(DB::raw('RAND()'))->take(8)->get();

…您得到的错误是什么?SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“categories.id”附近使用的正确语法,其中
domain\u category
domain\u id
=?第1行按兰德()asc lim'订购(SQL:从
类别
上的
文章
内部连接
类别
中选择
文章
=
文章
类别id
左连接
域类别
域类别
中的
类别id
类别.id``where
域类别
doma>在_id
=5 order by RAND()asc limit 5)Great:)它奏效了,是的,我刚刚注意到了这一点。谢谢你的朋友帮助我。
$randomArticles = Article::select("articles.*")
                        ->join('categories', 'categories.id', '=', 'articles.category_id')
                        ->join('domain_category', 'domain_category.category_id', 'categories.id')
                        ->where('domain_category.domain_id', $domain->lander_domain_id)
                        ->orderBy(DB::raw('RAND()'))->take(8)->get();
$randomArticles = Article::select("articles.*")
                        ->join('categories', 'categories.id', '=', 'articles.category_id')
                        ->join('domain_category', 'domain_category.category_id', '=', 'categories.id')
                        ->where('domain_category.domain_id', $domain->lander_domain_id)
                        ->orderBy(DB::raw('RAND()'))->take(8)->get();