Вставить построитель запросов столбца массива laravel - PullRequest
0 голосов
/ 10 февраля 2020

Я использую laravel, и я хочу вставить массив в столбец, но это дает мне эту ошибку, я не понимаю, почему

здесь мой запрос

        DB::table('cart_product')->insert([
          ['product_id' => $request->product_id,'quantity' => $request->quantity, 'cart_id' => \Auth::user()->cart()->get()->first()->id, 'color_id' => $request->color, 'total_price' => $productPrice, 'specification' => $request->specification]
          , ]);

и здесь это модель

class CartProduct extends Model
{
  use SoftDeletes;
  protected $guarded = ['id'];
  protected $dates = ['deleted_at'];
  protected $table = 'cart_product';
  protected $casts = ['specification' => 'array'];
  }
}

и ошибка для этого

$request->specification

вот дд этого

array:4 [▼
  0 => "4"
  1 => "7"
  2 => "8"
  3 => "9"
]

дает мне эту ошибку

Преобразование массива в строку

Ответы [ 3 ]

3 голосов
/ 10 февраля 2020

Приведение работает только при использовании Eloquent Models для выполнения запросов. Когда вы используете Query Builder напрямую, ваши приведения не выполняются, поэтому вы пытаетесь связать массив с запросом MySQL.

Либо вручную json_encode значение:

DB::table('cart_product')->insert([
    ['specification' => \json_encode($request->specification)]
]);

Или используйте красноречивую модель:

CartProduct::create([
    'specification' => $request->specification,
]);
0 голосов
/ 10 февраля 2020

Если вы хотите использовать DB, тогда вам нужно json_encode, чтобы сохранить массив в вашей базе данных

DB::table('cart_product')->insert([
          [
          'product_id' => $request->product_id, 
          'quantity' => $request->quantity,
          'cart_id' => \Auth::user()->cart()->get()->first()->id, 
          'color_id' => $request->color,
          'total_price' => $productPrice,
          'specification' => json_encode($request->specification) // add json_enocde here
          ]
          , ]);
0 голосов
/ 10 февраля 2020

Преобразование массива в строку

DB::table('cart_product')->insert([[
 'product_id' => $request->product_id,
 'quantity' => $request->quantity,
 'cart_id' => \Auth::user()->cart()->get()->first()->id,
 'color_id' => $request->color, 
 'total_price' => $productPrice, 
 'specification' => '[4, 7, 8, 9]'
]]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...