Laravel Pivot присваивает многим многим NULL результат - PullRequest
0 голосов
/ 08 декабря 2018

У меня не получается найти, почему service_id возвращает нулевые значения

Модель служб

public function categories()
{
    return $this->belongsToMany('App\Models\Categories', 'categories_services', 'services_id', 'categories_id');
}

Категории Модель

protected $table = "categories";

public function services()
{
    return $this->belongsToMany('App\Models\Services', 'categories_services', 'categories_id', 'services_id');
}

Контроллер служб

    $command = new \App\BizCommands\AddServices();
    $arr = $request->all();

    $arr["merchant_id"] = 1;
    $arr["peak_mode"] = 0;
    $arr["type"] = "SERVICE";
    $arr["tags"] = implode(",", $request->tags);
    $ret = $command->execute($arr, Auth::user());
    $ret->success = ($ret->error_code==0);

    $service = new Services;

    $service->categories()->attach($request->category_id);

    dd($service);

таблица category_services получает только идентификатор для соответствующего идентификатора категории, только что добавленный идентификатор для службы приводит к нулю при вставке в category_services.

любая помощь очень ценится

1 Ответ

0 голосов
/ 08 декабря 2018

Вы только что создали новый экземпляр служб.Итак, я думаю, что это будет нулевым.Например: если мне нужно вставить роль для пользователя, я могу сделать это:

$user = App\User::find(1);

$user->roles()->attach($roleId);

Это вставит role_id.В вашем случае вы можете сделать что-то вроде:

$service = new Service();
$service->name = $request->name;
$service->Save();

$service->categories()->attach($request->category_id);
...