"Incorrect integer value"插入数据时[Eloquent]
"Incorrect integer value" when inserting data [Eloquent]
我的控制器
$this->validate($request, [
'master_item_id.*' => ['required'],
'quantity.*' => ['required', 'numeric', 'gt:0']
]);
$master_item_id = array_map('intval', $request->master_item_id);
$quantity = array_map('intval', $request->quantity);
$price = MasterItem::whereIn('id',$master_item_id)->get('price');
$transaction = Transaction::create([
'total_price' => 1,
'last_edited_by' => Auth::user()->name
]);
foreach ($master_item_id as $key => $no) {
$input['transaction'] = $transaction->id;
$input['master_item_id'] = $no;
$input['quantity'] = $quantity[$key];
$input['price'] = $price[$key];
TransactionItem::create($input);
}
我的模型
protected $table = 'transaction_item';
protected $guarded = [];
public $timestamps = false;
public function transaction()
{
return $this->belongsTo(Transaction::class, 'transaction_id');
}
public function item()
{
return $this->belongsTo(MasterItem::class, 'master_item_id');
}
我创建的时候,弹出这个错误。
SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '{"price":1000000}' for column `myDatabase`.`transaction_item`.`price` at row 1
我知道问题是因为我的$price
,但我不知道如何解决这个问题,有没有更好更简单的方法来解决我的问题?谢谢!
很确定问题出在
$input['price'] = $price[$key];
因为 MasterItem::whereIn('id',$master_item_id)->get('price');
会 return 像这样:
[{price: X}, {price: Y} ...]
而不是
[X, Y]
试试这个:
$input['price'] = $price[$key]['price'];
我的控制器
$this->validate($request, [
'master_item_id.*' => ['required'],
'quantity.*' => ['required', 'numeric', 'gt:0']
]);
$master_item_id = array_map('intval', $request->master_item_id);
$quantity = array_map('intval', $request->quantity);
$price = MasterItem::whereIn('id',$master_item_id)->get('price');
$transaction = Transaction::create([
'total_price' => 1,
'last_edited_by' => Auth::user()->name
]);
foreach ($master_item_id as $key => $no) {
$input['transaction'] = $transaction->id;
$input['master_item_id'] = $no;
$input['quantity'] = $quantity[$key];
$input['price'] = $price[$key];
TransactionItem::create($input);
}
我的模型
protected $table = 'transaction_item';
protected $guarded = [];
public $timestamps = false;
public function transaction()
{
return $this->belongsTo(Transaction::class, 'transaction_id');
}
public function item()
{
return $this->belongsTo(MasterItem::class, 'master_item_id');
}
我创建的时候,弹出这个错误。
SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '{"price":1000000}' for column `myDatabase`.`transaction_item`.`price` at row 1
我知道问题是因为我的$price
,但我不知道如何解决这个问题,有没有更好更简单的方法来解决我的问题?谢谢!
很确定问题出在
$input['price'] = $price[$key];
因为 MasterItem::whereIn('id',$master_item_id)->get('price');
会 return 像这样:
[{price: X}, {price: Y} ...]
而不是
[X, Y]
试试这个:
$input['price'] = $price[$key]['price'];