У меня есть таблица с продуктами, одна с категориями и одна, связывающая продукты с несколькими категориями. Все с правильными внешними ключами, связывающими их вместе. Когда пользователь находится в категории, продукты в этой категории выбираются с использованием модели ProductToCategory
.OrderBy со связанными таблицами базы данных в Laravel 5.1
Но я хотел бы найти простой способ, не зацикливая на выходе связанных продуктов в эту категорию для сортировки продуктов по названию.
Мой формат базы данных:
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
В моей ProductCategory модели у меня есть:
public function ProductToCategory() {
return $this->hasMany('App\Models\ProductToCategory');
}
В моей ProductToCategory модели у меня есть:
public function Product() {
return $this->belongsTo('App\Models\Product', 'product_id');
}
В контроллере у меня есть:
$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
информацию о товаре Мне нужно.
Но используя подход «Яркий» в моделях, я хочу заказать продукцию по имени, прежде чем дать мне результат запроса.
Как это сделать?
Что такое ProductToCategory? Почему бы вам не использовать многие-ко-многим с ownToMany? – sleepless
ProductToCategory - это таблица, в которой один продукт может быть связан с несколькими категориями. Таким образом, у вас есть, например, product_id 1 в базе данных как 'product_id 1; category_id 1; 'и' product_id 1; category_id 2; '. Поэтому я делаю запрос с category_id, чтобы получить все продукты этой категории. Было бы проще, если бы каждый продукт был связан с одной категорией –