Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 10.12.2017 21:31:01

Оптимизация запроса на вставку в БД

Доброго времени суток!
Подскажите, как оптимизировать следующий запрос?
Имеются 3 таблицы: 1.users, 2.projects, 3.project_user.
1. пользователи
2. пректы
3. связь пользователя и проекта (id, user_id, project_id)
В контроллере выполняю следующий метод:

public function changeUserProjects($checkedProjects, int $userId)
    {
        foreach ($checkedProjects as $projectId) {
            $userProjects = new UsersProjects();

            $userProjects->user_id = $userId;
            $userProjects->project_id = $projectId;
            $userProjects->active = 1;

            $userProjects->save();
        }

        $myProjects = $this->UserProjectIds($userId);

        return $myProjects;
    }

Подскажите как можно оптимизировать эту часть:

...
            $userProjects = new UsersProjects();

            $userProjects->user_id = $userId;
            $userProjects->project_id = $projectId;
            $userProjects->active = 1;

            $userProjects->save();
...

Я знаю про связь многие ко многим, но не могу понять как ее можно использовать на вставке данных.

Не в сети

#2 10.12.2017 22:03:47

Re: Оптимизация запроса на вставку в БД

При свзяи многие ко многим модель для pivot таблицы (project_user) обычно не делают:

public function changeUserProjects($checkedProjects, int $userId)
{
    $user = User::find($userId);

    foreach ($checkedProjects as $projectId) {
    	$user->projects()->attach($projectId, ['active' => 1]);
    }

    return $user->projects()->pluck('id');
}

Не в сети

#3 11.12.2017 00:10:54

Re: Оптимизация запроса на вставку в БД

Спасибо!
Ваша, помощь мне помогла.
Но, модель мене все таки понадобиться там присутствует - public $timestamps = false;
Или возможно обойтись без этого?

Не в сети

#4 11.12.2017 00:26:44

Re: Оптимизация запроса на вставку в БД

По умолчанию в pivot таблице и так нет timestamps, т.е. они отключены.

Не в сети

#5 11.12.2017 11:23:36

Re: Оптимизация запроса на вставку в БД

И вправду, работает)
Спасибо!

Не в сети

Подвал раздела