Я пытаюсь изучить Laravel и сейчас я экспериментирую с Eloquent. У меня есть следующий случай, который я не могу решить прямо сейчас:Laravel Eloquent Многие для многих, как
Скажем, я создаю интернет-магазин, так что у меня есть продукты (продукт 1, 2 продукта и т.д.):
+-------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| slug | varchar(255) | NO | | NULL | |
| description | text | NO | | NULL | |
| price | decimal(5,2) | NO | | NULL | |
| active | tinyint(4) | NO | | 1 | |
| created_at | timestamp | NO | | 0000-00-00 00:00:00 | |
| updated_at | timestamp | NO | | 0000-00-00 00:00:00 | |
+-------------+------------------+------+-----+---------------------+----------------+
Эти продукты сортируются в Taxonomies (марка, цвет, отдел):
+-------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| slug | varchar(255) | NO | | NULL | |
| description | text | NO | | NULL | |
| created_at | timestamp | NO | | 0000-00-00 00:00:00 | |
| updated_at | timestamp | NO | | 0000-00-00 00:00:00 | |
+-------------+------------------+------+-----+---------------------+----------------+
Эти классификационная термины (Nike, Adidas, красный, зеленый, мальчики, девочки):
+-------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| taxonomy_id | int(11) | NO | | NULL | |
| name | varchar(255) | NO | | NULL | |
| slug | varchar(255) | NO | | NULL | |
| description | text | NO | | NULL | |
| created_at | timestamp | NO | | 0000-00-00 00:00:00 | |
| updated_at | timestamp | NO | | 0000-00-00 00:00:00 | |
+-------------+------------------+------+-----+---------------------+----------------+
И последнее, что я быть_наст сводная таблица для подключения условия к продукции:
+------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| product_id | int(11) | NO | | NULL | |
| term_id | int(11) | NO | | NULL | |
| created_at | timestamp | NO | | 0000-00-00 00:00:00 | |
| updated_at | timestamp | NO | | 0000-00-00 00:00:00 | |
+------------+------------------+------+-----+---------------------+----------------+
я создал модели для продукта, систематики и Term, как это:
<?php
class Product extends Eloquent {
public function terms()
{
return $this->belongsToMany('Term', 'product_terms', 'product_id', 'term_id');
}
}
<?php
class Taxonomy extends Eloquent {
public function terms()
{
return $this->hasMany('Term');
}
}
<?php
class Term extends Eloquent {
public function taxonomy()
{
return $this->belongsTo('Taxonomy');
}
}
Теперь я хочу сделайте следующее: я хочу получить все продукты, перебрать их и показать что-то вроде имени, описания и цены. Ну, просто $products = Product::all();
- это все, что мне нужно. Затем, когда я перебираю продукты, я знаю, что могу сделать что-то вроде $product->terms
, чтобы получить все условия. Но как получить термин данной таксономии. Так например, например:
<?php
echo $product->term('brand'); // Where 'brand' is the taxonomy name of the term I want to get
echo $product->term('color'); // Where 'color' is the taxonomy name of the term I want to get
Надеюсь, кто-то может мне помочь.
Спасибо за ответ, я посмотрю на него позже сегодня. Но просто быстро понять, почему у меня есть термины, связанные с продуктами. Таксономия - это всего лишь название набора терминов. у вас есть такие термины, как «Красный, синий, зеленый, желтый», а таксономия этих терминов - «Цвет». Для продукта я хочу получить «условия», которые он имеет. Это не таксономии. Потому что, как правило, продукт будет иметь все таксономии. Меня интересуют, какие условия данной таксономии у него есть. «Какой цвет является продуктом», «Какой бренд является продуктом» – Crinsane
Ow, и btw, последние две таблицы, где действительно то же самое, но это была ошибка. Обновите его сразу. – Crinsane
Я не могу заставить это работать. Получите эту ошибку: 'Призыв к неопределенному методу Illuminate \ Database \ Query \ Builder :: taxonomy()' – Crinsane