我可以将变量发送到 laravel 模型吗?

Can I send a variable into laravel model?

所以我尝试使用以下方法添加从相关 table 获取特定数据,但我不知道这是否是正确的方法。这是它的样子。

public function  transspecific($lid){
    return $this->belongsTo('raplet\Keepertrans')->where("lang_id", $lid);
}

然后我尝试从中获取数据

dd($akeeper->transspecific($akeeper->id));

它并不像有任何东西,但当我在模型中键入 dd("hello") 时,它起作用了。很明显我的关系背景有问题

您想要做的是在 laravel][1] 模型中添加一个 [dynamic scope,这完全没问题。除了你需要声明与关系方法分开的范围。

关系:

public function keepertrans(){
    return $this->belongsTo('raplet\Keepertrans');
}

范围:

public function transspecific($lid){
    return $this->keepertrans()->where("lang_id", $lid);
}

然后您可以使用 get() 调用作用域来执行查询生成器:

(SomeOtherRelatedModel::first())->transspecific($someId)->get();

Eloquent 关系模型中可用的方法与您需要的不同。每当您需要添加一个自定义函数,该函数在内部向您的查询(构建器)添加一些过滤器时,您需要使用 scopes

范围函数的通用规则是scope + yourfunction

在您的情况下,您需要创建 scopeTranspecific 函数。

每个作用域都将第一个参数作为您在函数内部更新的构建器。后面的参数是可选的。

public function scopeTranspecific($query, $lid){

    return $query->keepertrans()->where("lang_id", $lid);
}

然后就可以使用了:

Model::where('column1' , 'value')->transpecific($id)->get()

如果您只是在没有 ->get() 的情况下转储它,您将获得查询生成器实例。您必须执行 ->get() 才能获取数据