何时使用belongsTo和何时使用?

时间:2016-07-20 20:08:28

标签: laravel laravel-5.2

如果我不对,请纠正我。

有表productscategories

每种产品都有自己的类别。所以,它可能更多。

所以,我不需要按指定的类别选择所有产品。

我应该在模型中使用什么样的关系:belongsTohasMany? 这是重要的序列吗?

1 个答案:

答案 0 :(得分:2)

由于products有多个categoriescategories可以有多个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);
    }
}