#laravel #eloquent
Вопрос:
У меня есть три таблицы (пользователи, table_1, table_2) и внешние ключи таблиц пользователей в таблицах table_1 и table_2.
Пользователи
id
name
email
status (1/0)
created_at
updated_at
Таблица 1
id
message
status (1/0)
user_id (FK of users)
created_at
updated_at
Таблица 2
id
about
status (1/0)
user_id (FK of users)
created_at
updated_at
Примечание: Для объяснения я использовал название таблицы 1,2.
Теперь я обновляю статус пользовательской таблицы и то же обновление статуса в table_1 и table_2, где внешний ключ совпадает.
Здесь я написал индивидуальный запрос для каждой таблицы:
$users = Users::where('id', $id)->update([
'status' => $status
]);
Table1::where('user_id', $id)->update([
'status' => $status
]);
Table2::where('user_id', $id)->update([
'status' => $status
]);
Итак, есть ли какой-либо способ уменьшить запрос с помощью красноречивых отношений?
Комментарии:
1. Ты хочешь чего-то подобного ?
$user = Users::find($id); $user->status = $status; $user->table1->status = $status; $user->table1->status = $status; $user->save();
2. @Фатимамажит Да. Спасибо. Я попробую это сделать.
3. Почему вы сохраняете один и тот же статус в разных таблицах. В идеале вы должны сохранять его только в таблице пользователей, и если у вас есть правильные отношения с таблицей_1 и таблицей_2, вы можете получить к ним доступ как — table_1->пользователь->>статус или table_2->>>пользователь->>>статус
4. Он разработан другими разработчиками.
5. Если вы используете mysql и не хотите выполнять эти операции с помощью laravel, вы можете создать триггер.