Я новичок в Laravel Framework. Если быть точным, я сейчас использую Laravel 5.6. Недавно у меня возникла проблема с вставкой отношения «многие ко многим» с массивом дополнительных атрибутов.
Вот мой сценарий:
$data = [
"produk_id" => [
0 => 17,
1 => 7,
2 => 2,
],
"tarif" => [
29290,
119395,
89873,
],
"qty" => [
0 => 4,
1 => 6,
2 => 13,
],
];
Transaksi::find(1)->produk()->attach($data['produk_id'], ['tarif'=>$data['tarif']]);
Это дает мне эту ошибку:
Странно, что полученный запрос кажется правдивым. Но предупреждаю за некоторым исключением.
Итак, я затем изменил стратегию, чтобы сопоставить массив тарифов, который подходит для Красноречивой документации , например:
$data_tarif = array_map(function ($item) {
return ['tarif' => $item];
}, $data['tarif']);
И затем передать его второму параметру присоединения в качестве дополнительных атрибутов:
Transaksi::find(1)->produk()->attach($data['produk_id'], $data_tarif);
Но это все еще дает мне исключение, даже настолько далёкое от моих ожиданий:
Неправильно ли я использую этот метод присоединения с несколькими массивами дополнительного атрибута? Так как я попробовал с простым массивом или документацией Laravel, но они, кажется, не работают хорошо. что я должен сделать, чтобы исправить их?
Некоторые приложения, чтобы помочь:
Это моя модель Transaksi и модель Produk
class Transaksi extends Model
{
protected $table = 'transaksi';
public function user()
{
return $this->belongsTo(User::class, 'user_id');
public function customer()
{
return $this->belongsTo(Customer::class, 'customer_id');
}
public function produk()
{
return $this->belongsToMany(Produk::class, 'detail_transaksi');
}
}
class Produk extends Model
{
protected $table = 'produk';
public function transaksi()
{
return $this->belongsToMany(Transaksi::class, 'detail_transaksi');
}
}