You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.6 KiB
80 lines
1.6 KiB
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use App\Common\ProductStatus;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
|
|
|
class AgentProduct extends BaseModel
|
|
{
|
|
use HasFactory, SoftDeletes;
|
|
|
|
protected $guarded = ['id'];
|
|
|
|
public function product()
|
|
{
|
|
return $this->belongsTo(Product::class);
|
|
}
|
|
|
|
public function coupon()
|
|
{
|
|
return $this->hasMany(Coupon::class);
|
|
}
|
|
|
|
public function fav()
|
|
{
|
|
return $this->hasOne(UserFav::class);
|
|
}
|
|
|
|
public function agent()
|
|
{
|
|
return $this->belongsTo(Agent::class);
|
|
}
|
|
|
|
public function category()
|
|
{
|
|
return $this->belongsTo(Category::class);
|
|
}
|
|
|
|
public function user()
|
|
{
|
|
return $this->hasOne(User::class, 'id', 'verifier');
|
|
}
|
|
|
|
public function guide()
|
|
{
|
|
return $this->belongsTo(Guide::class);
|
|
}
|
|
|
|
public function item()
|
|
{
|
|
return $this->hasMany(AgentProductItem::class);
|
|
}
|
|
|
|
public function setChannelIdAttribute($value)
|
|
{
|
|
if (is_array($value)) {
|
|
$this->attributes['channel_id'] = join(',', array_filter($value));
|
|
}
|
|
}
|
|
|
|
public function setProductIdsAttribute($value)
|
|
{
|
|
if (is_array($value)) {
|
|
$this->attributes['product_ids'] = join(',', array_filter($value));
|
|
}
|
|
}
|
|
|
|
//列表查询统一查询条件
|
|
public function scopeList($query)
|
|
{
|
|
return $query->with('product:id,title,pictures')
|
|
->whereHas('product', function ($query) {
|
|
return $query->where('status', ProductStatus::ON_SALE)->where('stock', '>', 0);
|
|
})
|
|
->where('status', ProductStatus::ON_SALE)->where('stock', '>', 0)
|
|
->select('id', 'sale', 'product_id', 'price', 'original_price')
|
|
->orderBy('id', 'DESC');
|
|
}
|
|
}
|