繁体   English   中英

Laravel 有条件地预先加载,使用或查询

[英]Laravel conditionally eager load, with or where query

我有这个查询:

    $paginated = File::whereIn('model_id', $channelRules->pluck('id'))
        ->with('campaignChannelRule.channel.channel')
        ->where('model_type', 'campaign_channel_rule')
        ->orWhere(function($query) use($campaign) {
            $query->where('model_type', 'campaign')->where('model_id', $campaign->id);
        })
        ->paginate(15);

问题是,当文件是model_type campaign时,我不想急切加载->with('campaignChannelRule.channel.channel')

我怎样才能做到这一点?

谢谢

我认为这是因为查询的语法错误,试试这个:

$paginated = File::with('campaignChannelRule.channel.channel')
        ->whereIn('model_id', $channelRules->pluck('id'))
        ->where(function ($w) use ($campaign) {
            $w->where('model_type', 'campaign_channel_rule')
                ->orWhere(function ($query) use ($campaign) {
                    $query->where('model_type', 'campaign')->where('model_id', $campaign->id);
                });
            })
        ->paginate(15);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM