Страница 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') делает запрос, то в чем разница?