因此,我尝试使用以下方法从相关表中获取特定数据,但我不知道这是否是正确的方法。这就是它的样子。
public function transspecific($lid){
return $this->belongsTo('raplet\Keepertrans')->where("lang_id", $lid);
}
然后我尝试从中获取数据
dd($akeeper->transspecific($akeeper->id));
它没有任何作用,但是当我在模型中键入dd("hello")
时,它可以工作。很明显,我的关系上下文有问题
答案 0 :(得分:1)
您要尝试做的是添加[laravel中的动态范围] [1]模型,这完全没问题。除了需要声明与关系方法分开的范围。
关系:
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();
答案 1 :(得分:1)
在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()
来获取数据