我尝试按如下方式获取数据数组:
$coupons = $user->coupons::where('is_activated_flg', 1)->where('is_used_flg', 0)->lists('amount');
我有这个错误:
非静态方法Illuminate \ Support \ Collection :: where()不应该静态调用
你能告诉我这是什么问题吗?
答案 0 :(得分:2)
您可能希望将其更改为以下内容:
$couponQuery = $user->coupons()->where('is_activated_flg', 1)->where('is_used_flg', 0);
$couponCollection = $couponQuery->get();
..或合并:
$coupons = $user->coupons()->where('is_activated_flg', 1)->where('is_used_flg', 0)->get();
如果您使用的是Laravel 5.1或略低于此,您可能需要考虑使用pluck而不是list: https://laravel.com/docs/5.1/collections#method-pluck
$plucked = $collection->pluck('name');
$plucked->all();
答案 1 :(得分:1)
尝试发送where子句数组
来自官方文档
$users = DB::table('users')->where([
['status','1'],
['subscribed','<>','1'],
])->get();
答案 2 :(得分:1)
我可能会在我的用户模型中定义一个雄辩的关系。
/**
* User can have many coupons
*/
public function coupons()
{
return $this->hasMany('App\Coupons')->where('is_activated_flg', 1)->where('is_used_flg', 0);
}
然后将其称为
$user = User::findOrFail($id);
$coupons = $user->coupons;