第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在laravel中的with()方法之后限制查詢

如何在laravel中的with()方法之后限制查詢

PHP
喵喵時(shí)光機(jī) 2023-08-26 17:34:21
我有 2 個(gè)型號(hào)。帖子模型和類別模型。class PostModel extends Model{    protected $table='posts';    protected $primaryKey = 'id';    protected $guarded=['id'];    public function categories()    {        return $this->belongsTo(CategoriesModel::class);    }}class CategoriesModelextends Model{    protected $table='categories';    protected $primaryKey = 'id';    protected $guarded=['id'];    public function posts()    {        return $this->hasMany(PostModel::class);    }}我想獲得 6 個(gè)類別和 10 個(gè)帖子。我在我的控制器中使用了這段代碼$categories = CategoriesModel::with(['pages' => function($query) {        $query->limit('10');    }])->take("6")->get();但這段代碼是錯(cuò)誤的。它適用于所有記錄。但事實(shí)是此查詢適用于每個(gè)類別。請(qǐng)幫助我,謝謝
查看完整描述

4 回答

?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊

有一個(gè)專門處理此問(wèn)題的 Laravel 包,稱為Eloquent Eager Limit:

安裝后:

composer?require?staudenmeir/eloquent-eager-limit:"^1.0"

您應(yīng)該在應(yīng)用有限預(yù)加載的模型中使用它:

class PostModel extends Model

{

use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;

?// ........

}


class CategoriesModel

extends Model

{


use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;

?// ........

}

現(xiàn)在這個(gè)查詢將得到你想要的結(jié)果:


$categories = CategoriesModel::with(['pages' => function($query) {

? ? ? ? $query->limit('10');

? ? }])->take("6")->get();


查看完整回答
反對(duì) 回復(fù) 2023-08-26
?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊

對(duì)于急切加載,您可以使用地圖操作執(zhí)行以下操作:


$categories = CategoriesModel::with('pages')->take(6)->get()

  ->map(function($q)

    { $q->pages = $q->pages->take(10); // take only 10 query

      return $q; 

    }

);

上述方法之所以必要,是因?yàn)槭芗s束的預(yù)加載查詢大致可轉(zhuǎn)換為 SQL,如下所示:


查詢選擇類別:


select * from `categories`

limit 6;

查詢以獲取關(guān)系


select * from `categories`

inner join `posts` on `categories`.`id` = `posts`.`category_id`

where `posts`.`category_id` in (id's from categories query)

limit 10;


查看完整回答
反對(duì) 回復(fù) 2023-08-26
?
夢(mèng)里花落0921

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊

首先,您的控制器中的關(guān)系名稱是錯(cuò)誤的。通過(guò)以下代碼更新您的類別模型:


public function ten_posts()

{

  return $this->hasMany(PostModel::class)->take(10);

}

然后使用以下代碼更新您的控制器:


$categories = CategoriesModel::with('ten_posts')->take(6)->get();


查看完整回答
反對(duì) 回復(fù) 2023-08-26
?
DIEA

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊

嘗試這樣 -


$categories = CategoriesModel::with(['pages' => function($query) {

        $query->take('10');

    }])->take("6")->get();


查看完整回答
反對(duì) 回復(fù) 2023-08-26
  • 4 回答
  • 0 關(guān)注
  • 307 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)