如果我不对,请纠正我。
有表products
和categories
。
每种产品都有自己的类别。所以,它可能更多。
所以,我不需要按指定的类别选择所有产品。
我应该在模型中使用什么样的关系:belongsTo
或hasMany
?
这是重要的序列吗?
答案 0 :(得分:2)
由于products
有多个categories
而categories
可以有多个products
,因此称为many-to-many SQL relationship。
如果我们转到Laravel Eloquent documentation,您会看到要使用belongsToMany()
。这意味着,如果您希望能够从products
检索所有category
,您可以执行以下操作(从Laravel的文档中无耻地复制):
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
/**
* The products that belong to the category.
*/
public function products()
{
return $this->belongsToMany('App\Product');
}
}
当然,这种多对多关系的另一面非常相似:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
/**
* The categories that belong to the product.
*/
public function categories()
{
return $this->belongsToMany('App\Category');
}
}
现在......如果您想要获取所有产品并随后查找每种产品的所有类别,您可以执行以下操作:
$products = Product::all();
foreach($products as $product) {
// var_dump($product);
$categories = $product->categories();
foreach($categories as $category) {
// var_dump($category);
}
}