相关疑难解决方法(0)

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 5.1使用限制在()方法中的雄辩

雄辩

$staffGroup = StaffGroup::where('id', $id)
            ->with('staffGroupRight')
            ->first();
Run Code Online (Sandbox Code Playgroud)

StaffGroup Model:

public function staffGroupRight() {
    return $this->hasMany('Modules\Staff\Http\Models\StaffGroupRight');
}
Run Code Online (Sandbox Code Playgroud)

我所做的是,

public function staffGroupRight() {
    return $this->hasMany('Modules\Staff\Http\Models\StaffGroupRight')->take(5);
}
Run Code Online (Sandbox Code Playgroud)

但它总共给出了5行,staff_group但我希望它能limit用于一个staff_group

例如

有10 staff_group则给出了5条的staffgrouprights为10 staff_group,但我想它5单staff_group

这里staffGroupRight返回data适当idstaff group.

但我想limit在那个with()方法数据中设置.

是否有可能limitwith()方法中设置......?

limit laravel eloquent laravel-5.1

3
推荐指数
1
解决办法
4319
查看次数

Laravel 急切加载功能限制

我有工作职能,但是,我想限制每位顾问返回的治疗数量。

工作示例:

Clinic::where('user_id', Auth::id())
            ->with('consultants.specialism', 'consultants.treatments')
            ->first();
Run Code Online (Sandbox Code Playgroud)

建议的(但不起作用)示例:

Clinic::where('user_id', Auth::id())
            ->with('consultants.specialism')
            ->with(['consultants.treatments' => function ($query) {
                $query->take(3);
            }])
            ->first();
Run Code Online (Sandbox Code Playgroud)

不幸的是,takeorlimit函数将其限制为返回的处理总数。

我希望将每位顾问的治疗次数限制为最多 3 次,而不是总数。

请问我怎样才能实现这个目标?

php eager-loading laravel laravel-5.3

2
推荐指数
1
解决办法
1231
查看次数

Laravel 限制每个模型的预加载

使用我们的 User 模型,我们渴望加载对话和这些对话的消息。在每个对话中,我们希望引导最后 25 条消息。所以我们写了下面的查询。

User::where('status', 3)->with(['conversations.messages' => function ($q) {
    $q->take(25)->orderBy('created_at', 'DESC');
}])->get();
Run Code Online (Sandbox Code Playgroud)

但是,此函数总共只返回 25 条消息(因此不是每个对话)。即使您有 1000 个用户,它也会加载消息表中的最后 25 条消息,但不会加载用户每个会话的最后 25 条消息。

有没有办法在 Laravel Eloquent 方法中解决这个问题?

laravel eloquent

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