[英]Laravel 5.3: Eloquent hasMany update
我需要使用Eloquent更新特定訂單的商品。 我有這個模型:
class Orders extends \Illuminate\Database\Eloquent\Model
{
public $timestamps = false;
protected $fillable = ['items_array'];
public function items()
{
return $this->hasMany(Items::class, 'order_id', 'order_id');
}
public function setItemsArrayAttribute($data)
{
$this->items()->whereIn('article_id', array_map(function($item){
return $item['article_id'];
}, $data['items']))->update($data);
}
}
class Items extends \Illuminate\Database\Eloquent\Model
{
protected $table = 'order_to_items';
public $timestamps = false;
protected $fillable = ['internal_code'];
public function order()
{
return $this->belongsTo(Orders::class, 'order_id', 'order_id');
}
}
我有這樣的api響應:
$response = [
'message'=>'some',
'order_id'=>'111-222-333',
'items'=>[
[
'article_id' => 'R-320108',
'internal_code' => 333
],
[
'article_id' => 'R-320116',
'internal_code' => 444
],
]
];
所以我做這個
$order = Orders::where('order_id', $response['order_id'])->with('items')->first();
而我試圖做到這一點:
$order->update([
'is_sent' => true,
'items_array' => $response['items']
]);
但這不起作用。 有什么方法可以將相關模型與API響應進行匹配並進行更新?
謝謝!
您可以使用save()
:
$order->is_sent = true;
$order->items_array = $response['items'];
$order->save();
或update()
:
$order = Orders::where('order_id', $response['order_id'])
->update([
'is_sent' => true,
'items_array' => $response['items']
]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.