カテゴリは1つ、製品は複数のカテゴリにリンクされた製品があるテーブルがあります。すべてそれらを一緒にリンクする正しい外部キーで。ユーザーがカテゴリに属する場合、ProductToCategory
モデルを使用して、このカテゴリ内の商品が選択されます。Laravel 5.1でリンクされたデータベーステーブルを持つOrderBy
しかし、このカテゴリにリンクされた製品の出力をループして製品を名前順に並べ替えることなく、簡単な方法を見つけることができます。
私のデータベースレイアウト:
:私が持っているコントローラでpublic function Product() {
return $this->belongsTo('App\Models\Product', 'product_id');
}
:私は私のProductToCategoryモデルで
public function ProductToCategory() {
return $this->hasMany('App\Models\ProductToCategory');
}
:私は私のProductCategoryモデルで
products
id: 1; name: testing 123
id: 2; name: testing 345
id: 3; name: testing 567
product_categories
id: 1; name: cat one
id: 2; name: cat two
id: 3; name: cat three
product_to_categories
id: 1; product_id: 1; product_category_id: 1
id: 2; product_id: 1; product_category_id: 2
id: 3; product_id: 2; product_category_id: 1
id: 4; product_id: 3; product_category_id: 1
id: 5; product_id: 3; product_category_id: 2
id: 6; product_id: 3; product_category_id: 3
$linked_products = $category->ProductToCategory()->get();
foreach($linked_products as $linked_product) {
if($linked_product->Product->is_active == 1) {
$array[$linked_product->product_id] = $linked_product->Product);
}
}
これは私に必要な製品情報$linked_product->Product
を私に与えます。
しかし、モデルでEloquentアプローチを使用すると、私はクエリ結果を与える前に製品を名前で注文したいと思います。
どうすればよいですか?
ProductToCategoryとは? belongsToManyでmany-to-manyを使ってみませんか? – sleepless
ProductToCategoryは、1つの製品を複数のカテゴリにリンクできるテーブルです。ですから、例えばproduct_id 1は 'product_id 1 'としてデータベースにあります。 category_id 1; 'および' product_id 1; category_id 2; '。だからcategory_idでこのカテゴリのすべての商品を取得するためのクエリを実行します。各製品が1つのカテゴリにリンクされていると、より簡単になります –