[英]Model relationships in Laravel 5.3
我有網站購物車的MySQL表格:
Cart:
id | user
Cart_goods:
cart_id | good_id | good_type
Details:
id | name
Appliances:
id | name
Class Cart,包含商品:
class Cart extends Model
{
protected $table = 'cart';
protected $fillable = ['user', 'sum', 'profit', 'discount'];
protected $guarded = ['user'];
public function goods()
{
return $this->hasMany('App\Models\Good');
}
}
類別好,可以是詳細信息或設備,相對於購物車由cart_id:
class Good extends Model
{
protected $table = 'cart_goods';
protected $types = [
'Detail' => 'App\Models\Detail',
'Appliance' => 'App\Models\Appliance'
];
public $primaryKey = 'cart_id';
public function good()
{
return $this->morphTo();
}
}
詳細課程:
class Detail extends Model {
use SoftDeletes;
protected $morphClass = 'Detail';
protected $table = 'details';
protected $fillable = ['article', 'name', 'photo', 'price_procurement', 'price_retail', 'serial', 'location_id', 'type_id', 'appliance_id', 'comment', 'for'];
protected $dates = ['deleted_at'];
protected $guarded = [];
public function goods()
{
return $this->morphMany('App\Models\Good', 'good');
}
}
我需要在購物車中獲取所有設備和細節。 我怎么能用ORM做到這一點?
使用嵌套的預先加載 。 假設關系方法名稱是cartGoods
, details
和appliances
,那么details
信息是購物車的details
信息,並且您已經定義了正確的關系:
Card::where('id', $id)
->with('cartGoods.appliances', 'details')
->first();
嘗試這個:
方法1:如果您有$ cart模型實例
$cart->load('goods.good');
方法2:如果您需要購物車中的所有設備和詳細信息,請使用卡ID
Cart::where('id', $cartId)->with('goods.good')->first();
我已經完成了這個,問題出在模型名稱中,我將它寫入數據庫,如Detail和Appliance,但我需要使用
Relation::morphMap([
'detail' => 'App\Models\Detail',
'appliance' => 'App\Models\Appliance',
]);
在AppServiceProvider類中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.