php – 具有条件的laravel belongsstomany

我有以下型号.

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();
    }

}

当我使用DB :: getQueryLog调试budgetById方法时,查询如下

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'

返回0行,但是当我尝试修改查询并在pgadmin中运行它时,以下脚本运行良好.

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'

注意我删除training_id是null并从laravel生成查询.我的budgetById方法有什么问题?

解决方法:

调用了get()并且没有在这里使用return:

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

你应该这样使用:

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

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...