2016-04-28 45 views
2

我試圖讓數據數組如下:非靜態方法照亮的 Support 收藏::其中()不應該被稱爲靜態

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

我有這樣的錯誤:

Non-static method Illuminate\Support\Collection::where() should not be called statically

你能告訴我問題是什麼嗎?

+1

我不知道什麼是錯誤的部分尚不清楚,但它意味着'$用戶>券:: where'是對子級'$用戶>優惠券 - >其中' – ash

+0

@ash得到它!謝謝! – lalala

回答

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略低於你可能要考慮使用動物內臟,而不是名單: https://laravel.com/docs/5.1/collections#method-pluck

$plucked = $collection->pluck('name'); 
$plucked->all(); 
1

嘗試發送的,其中來自官方的文檔

$users = DB::table('users')->where([ 
    ['status','1'], 
    ['subscribed','<>','1'], 
])->get(); 

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

+0

好吧,我現在看到了正確的答案(在評論:():() – Pietro

+0

*如果* OP沒有使用雄辯,這個答案實際上並不是那麼糟糕,但我假設OP使用雄辯。 – ash

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; 
相關問題