非静态方法Illuminate \ Support \ Collection :: where()不应该静态调用

时间:2016-04-28 13:47:32

标签: php laravel

我尝试按如下方式获取数据数组:

$coupons = $user->coupons::where('is_activated_flg', 1)->where('is_used_flg', 0)->lists('amount');

我有这个错误:

  

非静态方法Illuminate \ Support \ Collection :: where()不应该静态调用

你能告诉我这是什么问题吗?

3 个答案:

答案 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();

https://laravel.com/docs/5.2/queries#selects

答案 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;