Laravel прикрепляет сводные данные без ошибок - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть сводная таблица и отношение по модели. Продукт:

public function product_bodies()
{
    return $this->belongsToMany(static::class, 'product_bodies')->withPivot('product_id', 'product_body_id');
}

В контроллере, когда я хочу прикрепить данные:

    $products = ['sadasdasd', 'asdasda', 'asdasd', 'asdasd']; //for column product_body_id
    $product = Product::create($request->all());

    $product->product_bodies()->attach($products);

Я получаю ошибку:

Общая ошибка: 1364 Поле 'product_body_id' не имеет значения по умолчанию Значение

Если я сделаю это:

public function product_bodies()
{
    return $this->belongsToMany(static::class, 'product_bodies', 'product_id', 'product_body_id')->withPivot('product_id', 'product_body_id');
}

Тогда все работает хорошо. Но тогда я не могу получить сводные данные с помощью:

$product->product_bodies;

Я получаю пустые предметы ..

Как я могу решить эту проблему?

Таблица product_bodies имеет 3 столбца:

  • ID
  • product_id
  • product_body_id

В product_body_id я передаю строки.

1 Ответ

0 голосов
/ 15 ноября 2018

У меня есть 3 идеи:

  1. Вам необходимо заменить static :: class на '\ App \ ProductBody' или ProductBody :: class

    public function product_bodies()
    {
        return $this->belongsToMany('\App\ProductBody', 'product_bodies')->withPivot('product_id', 'product_body_id');
    }
    
  2. $ продукты должны быть массивом идентификаторов тел продукта.

    $productBodiesIds = [1, 55, 66];
    $product->product_bodies()->attach($productBodiesIds);
    
  3. Возможно, лучше использовать синхронизацию вместо присоединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...