在模型中使用select时,模型返回空数组(Laravel)

时间:2019-09-16 10:36:22

标签: php laravel eloquent laravel-5.8 eloquent--relationship

我有一个 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 的数据库

1 个答案:

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