在模型 (Laravel) 中使用 select 时模型 return 为空数组

Model return empty array when use select in model (Laravel)

我有一个 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);

我尝试只从 table 接收一个特定的列,但它 return 编辑了一个空数组。在调试栏中,当我在 PHPMyAdmin 中使用它时,我看到了查询 return 我想要的只有一列。

这可能吗?

P.S(使用Laravel 5.8.34)

正在更新

我在项目中选择'Entity Layers for Translated Fields and Non-Translated Fields'翻译方式,并且有这样的数据库Database picture

如果你只想得到 language_id 类型的 translation 那么你可以这样做。

$language_id = 1;
$products = Product::with(array('translation'=>function($query) use($language_id){
    $query->where('language_id',$language_id);
}))->get();

如果你想select命名那么像这样 确保你必须 select id,name id 是必须的。

$language_id = 1;
$products = Product::with(array('translation'=>function($query) use($language_id){
    $query->where('language_id',$language_id)->select('id','name');
}))->get();

从模型中删除 where 条件。

根据您在语言中的数据库结构,它是 belongsToMany with role

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