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

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

Laravel Eloquent如何根據(jù)類別id獲取所有產(chǎn)品

Laravel Eloquent如何根據(jù)類別id獲取所有產(chǎn)品

PHP
慕工程0101907 2023-12-15 17:05:05
用戶產(chǎn)品控制器class UserProductsController extends Controller{    public function index()    {        $products = Product::get();        return view ('products')->with(compact('products'));          }          public function product_categories()    {        $categories = Category::all();        return view ('categories')->with(compact('categories'));          }  }產(chǎn)品表 public function up()    {        Schema::create('products', function (Blueprint $table) {            $table->bigIncrements('id');            $table->string('prod_name');            $table->string('prod_brand')->nullable();            $table->unsignedBigInteger('cat_id');            $table->string('prod_image_path')->nullable();            $table->timestamps();            $table->foreign('cat_id')            ->references('id')            ->on('categories')            ->onDelete('cascade');        });    }類別表   public function up()        {            Schema::create('categories', function (Blueprint $table) {                $table->bigIncrements('id');                $table->string('cat_name');                $table->string('cat_image_path')->nullable();                $table->string('cat_description')->nullable();                $table->timestamps();            });        }產(chǎn)品型號(hào)class Product extends Model{      public function category()    {        return $this->belongsTo('App\Category','category_id');    }     }類別型號(hào)class Category extends Model{   public function category()   {       return $this->hasMany('App\Product');   }}我的路線是Route::get('/All_Products', 'UserProductsController@index')->name('All_Products');Route::get('/product_categories', 'UserProductsController@product_categories')->name('categories');如何獲得同一類別的所有產(chǎn)品?由于這是我的第一個(gè)項(xiàng)目,我在這方面花費(fèi)了更多的時(shí)間。但對(duì)我來說沒有任何作用。有人可以指導(dǎo)我嗎?
查看完整描述

4 回答

?
楊魅力

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

假設(shè)你正確設(shè)置了你的關(guān)系(但事實(shí)并非如此)


您可以通過以下幾種方式使用 Eloquent:


$products = Category::findOrFail($categoryId)->products;


$products = Product::where('category_id', $categoryId)->get();


$products = Product::whereHas('category', function ($query) use ($categoryId) {

? ? $q->where('id', $categoryId);

})->get();


查看完整回答
反對(duì) 回復(fù) 2023-12-15
?
森欄

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

首先,你沒有正確定義你們的關(guān)系。它應(yīng)該是這樣的:


class Product extends Model

{

    public function category()

    {

        return $this->belongsTo('App\Category');

    }

}

class Category extends Model

{

   public function products()

   {

       return $this->hasMany('App\Product');

   }

}

然后在您的產(chǎn)品遷移文件中,cat_id 應(yīng)重命名為category_id。這樣,您就不需要在關(guān)系上指定外鍵。


我假設(shè)您想列出屬于特定類別的所有產(chǎn)品。您可以使用路由模型綁定輕松地做到這一點(diǎn)。在這種情況下,您的路線應(yīng)類似于:


Route::get('categories/{category:id}/products', [CategoryController::class, 'products']);

然后在你的控制器中:


use App\Category;


class CategoryController extends Controller

{

    public function products(Category $category)

    {

        $category->load('products');


        return view('products')->withCategory($category);

    } 

}

您可以在刀片視圖中訪問產(chǎn)品列表,如下所示:$category->products


查看完整回答
反對(duì) 回復(fù) 2023-12-15
?
白衣非少年

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

您需要對(duì)您的Category模型進(jìn)行調(diào)整,因?yàn)镃ategory有很多Products。就目前而言,關(guān)系的命名并沒有反映出這一點(diǎn)


class Category extends Model

{

   public function products()

   {

       return $this->hasMany('App\Product');

   }

}

然后您可以通過Category模型訪問產(chǎn)品,如下所示。


$categories = Category::with('products')->all();


$categories->each(function($category) {

    $products = $category->products;

    

    // Dump & Die a collection of products

    dd($products);

});

注意: 我已使用 with() 方法預(yù)先加載關(guān)系,這只是為了防止 n+1 查詢。有關(guān)急切加載和延遲加載的更多信息可以在文檔中找到。


查看完整回答
反對(duì) 回復(fù) 2023-12-15
?
回首憶惘然

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

你可以做類似的事情,


$products = product::with('categories')->get();

foreach($products as $product)

{

    foreach($product->categories as $category)

    {

        echo $category->name;

    }

}

$categories = Category::with('products')->get();


$category = Category::with('products')->find($category_id);


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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