Установка отношений продуктово
-
27-10-2019 - |
Вопрос
У меня есть 2 стола
Users Table => id , username
OrdersTable => order_id,user_id, qty,total
Мне нужно связать эти две таблицы.
id и user_id.
Как я могу сделать это с продуктовом Crud.
Решение
Если вы используете OrdersTable
В качестве основной таблицы вы можете использовать 1:1
Отношения с использованием set_relation (). Анкет Это было бы, если бы вы просматривали заказ и хотели увидеть/установить, к какому пользователю принадлежит заказ.
$crud->set_table('OrdersTable');
$crud->set_relation('id','UsersTable','username');
Это позволит вам выбрать, какой пользователь для конкретного заказа.
Однако, по-видимому, у пользователя может быть много заказов- А 1:n
отношение. Это было бы так, если бы пользователь был вашей основной таблицей, то есть вы просматриваете user
в Crud и хочу увидеть все связанные приказы.
Этот метод требует промежуточной таблицы, с которой вы связываете две существующие таблицы, и небольшое изменение существующей структуры таблицы. Вам нужно удалить user_id
в OrdersTable
. Анкет Промежуточная таблица, ради аргумента, называемого UserOrdersTable
потребуется следующие столбцы.
user_id INT
order_id INT
priority INT
Затем вы можете добавить отношения, используя set_relation_n_n () метод
Затем вы можете изменить set_relation_n_n()
звонить при просмотре OrdersTable
Таким образом, вы можете увидеть, какой пользователь сделал заказ.
Подводя итог, 1:n
Отношения с использованием set_relation_n_n()
позволит вам просматривать заказы пользователем и пользователем на заказ.
Другие советы
Если вы имеете в виду запрос, то;
select u.id, u.username, o.order_id, o.qty, o.total from users u left join orders o on(o.user_id = u.id) where 1=1