Страница 1 из 1
Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 05:09
user
Как проверить, существует ли связь между двумя таблицами объединенными через промежуточную таблицу?
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 05:34
futbolim
Что Вы подразумеваете под "существует"? Если Вы определили метод связи в модели, то она "существует".
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 05:38
user
futbolim писал(а): ↑2017.12.14, 05:34
Что Вы подразумеваете под "существует"? Если Вы определили метод связи в модели, то она "существует".
подразумеваю конкретную запись в промежуточной таблице, в которой описана связь между конкретными записями в этих таблицах
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 05:45
futbolim
Сделать запрос в базу.
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 11:33
user
futbolim писал(а): ↑2017.12.14, 05:45
Сделать запрос в базу.
какой, например?
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 15:04
caHek2x
похоже что вы издеваетесь )
берем из вашей соседней темы кусок кода:
Код: Выделить всё
$order->save();
$order->link('customer', $customer);
если $order это новая запись значит связи точно нет ...
если это старая запись то перед линком кто мешает сделать
Код: Выделить всё
if ($order->customer) // связь уже есть ...
значит надо удалить ее перед новым линком ... ну или чтото сделать что у вас положено по логике ...
ну или вообще сделайте
Код: Выделить всё
CustomerModel::find()->where(['order_id'=>$order_id, 'id'=>$customer_id])->one()
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 15:14
user
Это форум посвящен Yii framework, а не для тех, кто хочет поиздеваться )))
caHek2x писал(а): ↑2017.12.14, 15:04
ну или вообще сделайте
Код: Выделить всё
CustomerModel::find()->where(['order_id'=>$order_id, 'id'=>$customer_id])->one()
спасибо, это оптимально решение, т.к. запись может дублироваться и связь уже есть
извини за издевательство ))
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 15:32
caHek2x
да не надо извиняться просто иногда вопросы очень "интересные"
но мне кажется лучше проверять через связь а не отдельным запросом
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 15:49
user
caHek2x писал(а): ↑2017.12.14, 15:32
да не надо извиняться просто иногда вопросы очень "интересные"
но мне кажется лучше проверять через связь а не отдельным запросом
не всегда все понятно ))
а как через связь ты это имеешь ввиду?
if ($order->customer) // связь уже есть ...
если это, то это еще круче
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 16:48
caHek2x
ну да это и имею ввиду ... у вас же есть связь она за вас сделает запрос ...
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 17:54
user
caHek2x писал(а): ↑2017.12.14, 16:48
ну да это и имею ввиду ... у вас же есть связь она за вас сделает запрос ...
спасибо за терпение, еще тогда из этой серии вопрос, а как выборку сделать из первой таблицы при условии, если есть связь со второй?
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 17:57
caHek2x
Код: Выделить всё
table1model::find()->joinWith('table2', false, 'join')
или я не правильно понял ваш вопрос
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 18:00
user
caHek2x писал(а): ↑2017.12.14, 17:57
Код: Выделить всё
table1model::find()->joinWith('table2', false, 'join')
или я не правильно понял ваш вопрос
т.е. промежуточная таблица не участвует в запросе?
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 18:27
user
caHek2x писал(а): ↑2017.12.14, 16:48
ну да это и имею ввиду ... у вас же есть связь она за вас сделает запрос ...
к сожалению она вернет любую связь, без привязки с текущим id, а мне нужно применительно к конкретным id
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 19:33
caHek2x
всмысле ? к какому id .. ? у вас связь же привязана к модели по id ... или по какому полю ?
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 20:14
user
caHek2x писал(а): ↑2017.12.14, 19:33
всмысле ? к какому id .. ? у вас связь же привязана к модели по id ... или по какому полю ?
да, по id
например, в таблице написано
table1_1
1
user_id
1
но, если я зайду под пользователем id, которого отличен от все равно будет говорить, что связь есть
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.14, 23:57
caHek2x
значит вы чтото неверно делаете ...
Re: Как проверить, существует ли связь между двумя таблицами?
Добавлено: 2017.12.15, 00:16
user
вот так if ($order->customer), может скажете более развернуто, как верно?
но если это делает запрос и table1model::find()->joinWith('table2', false, 'join') делает запрос, то в чем разница?