Как проверить, существует ли связь между двумя таблицами?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Как проверить, существует ли связь между двумя таблицами?

Сообщение user »

Как проверить, существует ли связь между двумя таблицами объединенными через промежуточную таблицу?
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение futbolim »

Что Вы подразумеваете под "существует"? Если Вы определили метод связи в модели, то она "существует".
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение user »

futbolim писал(а): 2017.12.14, 05:34 Что Вы подразумеваете под "существует"? Если Вы определили метод связи в модели, то она "существует".
подразумеваю конкретную запись в промежуточной таблице, в которой описана связь между конкретными записями в этих таблицах
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение futbolim »

Сделать запрос в базу.
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение user »

futbolim писал(а): 2017.12.14, 05:45 Сделать запрос в базу.
какой, например?
caHek2x
Сообщения: 1240
Зарегистрирован: 2016.04.12, 20:41

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение caHek2x »

похоже что вы издеваетесь )
берем из вашей соседней темы кусок кода:

Код: Выделить всё

$order->save();
$order->link('customer', $customer);
если $order это новая запись значит связи точно нет ...
если это старая запись то перед линком кто мешает сделать

Код: Выделить всё

if ($order->customer) // связь уже есть ...
значит надо удалить ее перед новым линком ... ну или чтото сделать что у вас положено по логике ...

ну или вообще сделайте

Код: Выделить всё

CustomerModel::find()->where(['order_id'=>$order_id, 'id'=>$customer_id])->one()
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение user »

Это форум посвящен Yii framework, а не для тех, кто хочет поиздеваться )))
caHek2x писал(а): 2017.12.14, 15:04 ну или вообще сделайте

Код: Выделить всё

CustomerModel::find()->where(['order_id'=>$order_id, 'id'=>$customer_id])->one()
спасибо, это оптимально решение, т.к. запись может дублироваться и связь уже есть
извини за издевательство ))
caHek2x
Сообщения: 1240
Зарегистрирован: 2016.04.12, 20:41

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение caHek2x »

да не надо извиняться просто иногда вопросы очень "интересные" :-)
но мне кажется лучше проверять через связь а не отдельным запросом
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение user »

caHek2x писал(а): 2017.12.14, 15:32 да не надо извиняться просто иногда вопросы очень "интересные" :-)
но мне кажется лучше проверять через связь а не отдельным запросом
не всегда все понятно ))

а как через связь ты это имеешь ввиду?
if ($order->customer) // связь уже есть ...
если это, то это еще круче
caHek2x
Сообщения: 1240
Зарегистрирован: 2016.04.12, 20:41

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение caHek2x »

ну да это и имею ввиду ... у вас же есть связь она за вас сделает запрос ...
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение user »

caHek2x писал(а): 2017.12.14, 16:48 ну да это и имею ввиду ... у вас же есть связь она за вас сделает запрос ...
спасибо за терпение, еще тогда из этой серии вопрос, а как выборку сделать из первой таблицы при условии, если есть связь со второй?
caHek2x
Сообщения: 1240
Зарегистрирован: 2016.04.12, 20:41

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение caHek2x »

Код: Выделить всё

table1model::find()->joinWith('table2', false, 'join') 
или я не правильно понял ваш вопрос
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение user »

caHek2x писал(а): 2017.12.14, 17:57

Код: Выделить всё

table1model::find()->joinWith('table2', false, 'join') 
или я не правильно понял ваш вопрос
т.е. промежуточная таблица не участвует в запросе?
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение user »

caHek2x писал(а): 2017.12.14, 16:48 ну да это и имею ввиду ... у вас же есть связь она за вас сделает запрос ...
к сожалению она вернет любую связь, без привязки с текущим id, а мне нужно применительно к конкретным id
caHek2x
Сообщения: 1240
Зарегистрирован: 2016.04.12, 20:41

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение caHek2x »

всмысле ? к какому id .. ? у вас связь же привязана к модели по id ... или по какому полю ?
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение user »

caHek2x писал(а): 2017.12.14, 19:33 всмысле ? к какому id .. ? у вас связь же привязана к модели по id ... или по какому полю ?
да, по id
например, в таблице написано
table1_1
1
user_id
1
но, если я зайду под пользователем id, которого отличен от все равно будет говорить, что связь есть
caHek2x
Сообщения: 1240
Зарегистрирован: 2016.04.12, 20:41

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение caHek2x »

значит вы чтото неверно делаете ...
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как проверить, существует ли связь между двумя таблицами?

Сообщение user »

вот так if ($order->customer), может скажете более развернуто, как верно?

но если это делает запрос и table1model::find()->joinWith('table2', false, 'join') делает запрос, то в чем разница?
Ответить