laravel belongstomany with condition

laravel-4, php, postgresql

Solution

You have called `get()` and didn't use `return` here:

public function budgetById($training_id){
    // = in where is optional in this case
    $this->belongsToMany('Budget')->where('training_id', '=', $training_id);
}

You should use like this:

public function budgetById($training_id){
    // = in where is optional in this case
    return $this->belongsToMany('Budget')->where('training_id', '=', $training_id);
}

Problem

I have the following model. ``` class Training extends \Eloquent { // Add your validation rules here public static $rules = [ 'name' => 'required', 'city' => 'required', 'province' => 'required', 'budget_year' => 'required|integer', 's_date' => 'required|date', 'e_date' => 'required|date' ]; // Don't forget to fill this array protected $fillable = [ 'name', 'city', 'province', 'budget_year', 's_date', 'e_date' ]; public function material(){ return $this->hasMany('Material'); } public function budget(){ return $this->belongsToMany('Budget')->withPivot('amount'); } public function budgetById($training_id){ $this->belongsToMany('Budget')->where('training_id', '=', $training_id)->get(); } } ``` when I debug the `budgetById` method using `DB::getQueryLog`, the query is as follow ``` select budgets.*, budget_training.training_id as pivot_training_id, budget_training.budget_id as pivot_budget_id from budgets inner join budget_training on budgets.id = budget_training.budget_id where budget_training.training_id is null and training_id='6' ``` which return 0 rows, but when I try to modify the query and run it in pgadmin, the following script works well. ``` select budgets.*, budget_training.training_id as pivot_training_id, budget_training.budget_id as pivot_budget_id from budgets inner join budget_training on budgets.id = budget_training.budget_id where budget_training.training_id='6' ``` notice I remove `training_id is null and` from Laravel generated query. What is wrong with my `budgetById` method?

Original source