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