我有一个 hasOne(Many)关系函数,如下所示:
return $this->hasOne('App\Models\ProductTranslation','product_id','id')->where('language_id', $language_id['id']);
此外,我尝试使用
return $this->hasOne('App\Models\ProductTranslation','product_id','id')->select('product_translations.name')->where('language_id', '1');
在Controller中使用此
$value=Product::with('translation:name')->find(1);
我尝试仅从表中接收一个特定的列,但它返回了一个空数组。在调试栏中,当我在PHPMyAdmin中使用查询时,我会看到该查询,它只返回我想要的一列。
这可能吗?
P.S(使用Laravel 5.8.34)
更新
我在项目中选择“用于翻译字段和非翻译字段的实体层”方法进行翻译,并拥有一个类似Database picture 的数据库
答案 0 :(得分:1)
如果您只想获得 language_id 类型的翻译,那么您可以这样做。
$language_id = 1;
$products = Product::with(array('translation'=>function($query) use($language_id){
$query->where('language_id',$language_id);
}))->get();
,如果您想选择名称,则像这样
确保必须选择 id,名称 id
。
$language_id = 1;
$products = Product::with(array('translation'=>function($query) use($language_id){
$query->where('language_id',$language_id)->select('id','name');
}))->get();
从模型中删除条件。
根据您在语言中的数据库结构,属于RoleToToy
Languages.php模型
public function role(){
returh $this->belongsToMany('App\Models\Role','role_translations','language_id','role_id')
}
$language_id = 1;
$products = Product::with(array('translation.role'=>function($query) use($language_id){
$query->where('role_translations.language_id',$language_id)->select('languages.id','languages.name');
}))->get();