商品模型
namespace App;
use Illuminate\Database\Eloquent\Model;
class Articles extends Model
{
protected $table = 'articles';
protected $primaryKey = 'idArticle';
protected $fillable = [
'idArticle', 'Topic', 'Image', 'Content', 'Views',
];
protected $hidden = [
'idCategory', 'idUser',
];
public function category()
{
return $this->hasOne(Categories::class, 'idCategory', 'idCategory');
}
}
因此,现在当我调用$article = Articles::find(1);
时,它将从商品表返回数据,当我添加$article->category;
时,它将添加数据$article->category->Name
。我想将Name
直接放在$article
内-像$article->category
(所以$article->category->Name
到$article->category
中)可以使用模型类来定义还是我需要在控制器内部映射它?
答案 0 :(得分:0)
您可以将自定义属性分配给Model类。但是您不能使用与category()
方法相同的属性名称,因为$article->category
已访问过该属性名称。
为您提供名为category_name
的属性的示例
class Articles extends Model
{
// attributes to append to JSON responses
protected $appends = ['category_name'];
// ... your other properties and methods
// your custom attribute
public function getCategoryNameAttribute()
{
if (!is_null($this->category)) {
return $this->category->Name;
}
return '';
}
}
用作:
$article->category_name
答案 1 :(得分:0)
您可以使用@matticustard提到的appends
,也可以在检索模型时使用->with()
方法:
$article = Articles::find($id)->with('category');
然后,您可以通过以下方式访问类别名称:
$categoryName = $article->category->name;
希望有帮助。