如何使用wherehas子句和关系获取数据?



user table

id
email
password

会员表

id
user_id
expiry_date
delivery_day_innum(eg:like 7,8 days)

交货明细表

id
user_id
created_at
updated_at

货物表

id
user_id
name
qty

货物表

id
user_id
name
qty

关系

user->hasOne(Membership::class)
user->hasMany(Deliverdetailes::class)
user->hasMany(Goods::class)

现在,我想得到帐户未过期且deliver_day_innum等于 当前日期与最新created_at日期之间的差异

$myGoods= Goods::join('user','user.id','goods.user_id')
->join('membership','membership.user_id','=','user.id')
->join('deliverdetailes','deliverdetailes.user_id','=','user.id')
->whereDate('expiry_date','>',Carbon::now())
->whereRaw('DATEDIFF(maxDate, CURDATE())=membership.delivery_day_innum')
->select('goods.*',DB::raw('max(deliverdetailes.created_at) as maxDate'))->get();

第一个问题:未过期帐户的商品:

调整 Carbon::now(( 以匹配expiry_date的日期格式。

$goods = Good::whereHas('user.membership', function($query){
return $query->where('expiry_date', '<=', Carbon::now());
})->get();

在应用\良好中必需:与应用\用户的关系。

public function user()
{
return $this->belongsTo('AppUser');
}

第二个问题:请澄清:"deliver_day_innum等于今天与最近created_at日期之间的差额"。

相关内容

  • 没有找到相关文章

最新更新