Так как 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);
}
}
Извините за мое замешательство ... но может ли продукт иметь несколько категорий (или только один)? – Sam
Продукт имеет несколько категорий – Dev