购物车model 中关联product 使用 hasone
class StoreCart extends BaseModel
{
public static function tablePk(): ?string
{
return 'cart_id';
}
public static function tableName(): string
{
return 'store_cart';
}
public function product()
{
// 三个参数 分别是 外部数据表 外键 内键
return $this->hasOne(Product::class, 'product_id', 'product_id');
}
public function cartProduct()
{
// 三个参数 分别是 外部数据表 外键 内键
return $this->hasOne(Product::class, 'product_id', 'product_id')->field('product_id,image,store_name,is_show,status,is_del,unit_name,price,mer_status,temp_id');
}
public function productAttr()
{
// 三个参数 分别是 外部数据表 外键 内键
return $this->hasOne(ProductAttrValue::class, 'unique', 'product_attr_unique');
}
}
获取数据 使用with
public function getAll(int $uid)
{
$query = ($this->getModel())::where(['uid' => $uid, 'is_del' => 0, 'is_new' => 0, 'is_pay' => 0])->with(['product' => function ($query) {
$query->field('product_id,image,store_name,is_show,status,is_del,unit_name,price,mer_status,is_used');
}, 'productAttr' => function ($query) {
$query->field('product_id,stock,price,unique,sku,image');
}, 'merchant' => function ($query) {
$query->field('mer_id,mer_name,mer_state,mer_avatar');
}])->select();
return $query;
}