海南旅游SAAS
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

<?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');
}
}