小编use*_*996的帖子

Laravel 4 Eager Loading约束

如果评论user_id = $ id,我希望获得所有项目(主题)及其评论.我尝试这样的东西,但它不起作用.因此,如果Item没有得到user_id = $ id的任何评论,那么我不需要这个项目.

在DiscussionsItem模型中我有方法:

public function discussionsComments() {

    return $this->hasMany('DiscussionsComment', 'discussionsitem_id');
}
Run Code Online (Sandbox Code Playgroud)

我在控制器中的查询是这样的:

    $items = DiscussionsItem::whereBrandId($brand_id)
        ->whereBrandCountryId($country_id)
        ->with(['discussionsComments' => function($query) use ($id) {
            $query->where('user_id', '=', $id);
        }])
        ->whereHas('discussionsComments', function($query) use ($id) {
            $query->where('user_id', '=', $id);
        })
        ->with(['views' => function($query) use ($id) {
            $query->where('user_id', $id)->count();
        }])
        ->orderBy('created_at', 'DESC')->get();
Run Code Online (Sandbox Code Playgroud)

我的问题是我得到了带注释的项目,其中注释为user_id!= $ id.

PS我需要5条评论,但我无法想象如何做到这一点,因为 - >在我急切的负载中采取(5)是行不通的.

我搞清楚了(工作代码):

    $items = DiscussionsItem::whereBrandId($brand_id)
        ->whereBrandCountryId($country_id)
        ->whereHas('discussionsComments', function($query) use ($id) {
            $query->where('user_id', '=', $id);
        })
        ->with(['views' => function($query) use ($id) {
            $query->where('user_id', $id)->count();
        }]) …
Run Code Online (Sandbox Code Playgroud)

constraints eager-loading eloquent laravel-4

5
推荐指数
1
解决办法
142
查看次数

Laravel按条件雄辩或SQL命令

我在数据库表中有这些时间戳列-到期,编辑,created_at。如果项目的“到期”日期大于今天的日期,则需要按“编辑”进行排序,否则,需要按“ created_at”进行排序。

我正在尝试类似的操作,但无法正常工作

$items = $items
->orderBy(DB::raw("CASE WHEN expiration >= $time THEN edit ELSE created_at END"), 'DESC')
->get();
Run Code Online (Sandbox Code Playgroud)

要么

$items = $items
->orderBy(DB::raw("CASE WHEN expiration >= $time THEN edit END"), 'DESC')
->orderBy('created_at', 'DESC')
->get();
Run Code Online (Sandbox Code Playgroud)

变量$ time是正确的,所以我的问题出在查询中。样本数据:

id   name   created_at             expiration             edit
1.   it1    2015-03-16 15:42:40    0000-00-00 00:00:00    2015-03-16 15:42:40
2.   it2    2015-03-16 15:37:27    2015-03-16 00:00:00    2015-03-16 15:37:27
3.   it3    2015-03-16 12:36:50    2015-03-27 00:00:00    2015-03-16 14:52:19
Run Code Online (Sandbox Code Playgroud)

我需要按顺序-> it3,it1,it2

可变的$ time = 2015-03-17

sql query-builder eloquent laravel-4

3
推荐指数
2
解决办法
6803
查看次数