在模型 (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();
我有一个 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();