Добавление нескольких массивов дополнительных атрибутов в красноречивую вставку "многие ко многим" дает мне ошибку
Я новичок в 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']]);
Это дает мне эту ошибку:
Странно, что полученный запрос кажется правдивым. Но предупреждаю за некоторым исключением.
Итак, я затем изменил стратегию для сопоставления массива tarif, который подходит к документации Eloquent, например:
$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');
}
}
1 ответ
Попробуй это:
$attachArray = array();
foreach ($data['produk_id'] as $index => $id) {
$attachArray[$id] = ['tarif' => $data['tarif'][$index]];
}
Transaksi::find(1)->produk()->attach($attachArray);