在laravel中检索模型时,可以附加自定义属性吗?
问题是,我需要返回一些不在数据库中的数据以及来自数据库的信息。我一直在手动执行此操作,但我猜可能在模型中可以执行此操作。
示例:我有一个应用程序表。每个应用程序都包含一个文件夹,其中包含具有相同应用程序ID的文档。我需要附加与每个应用程序相对应的文件夹数量的文件。
这就是我的工作
$application = Application::get();
$application = $application->map(function($a){
$a->files = $this->getFiles($a->id); // This gets the amount of files
return $a;
})
是否有某种方法可以在执行$application->files
时在$application
中包含Application::get()
答案 0 :(得分:2)
class User extends Model
{
public function getFooBarAttribute()
{
return "foobar";
}
}
并访问该属性,例如:
$user->foo_bar;
或类似
$user->fooBar;
更详细的文档; https://laravel.com/docs/5.7/eloquent-mutators#defining-an-accessor
答案 1 :(得分:1)
在应用程序模型中
public function getFilesAttribute()
{
return 'lala'; // return whatever you need;
}
现在应用程序模型具有名为files
的属性。
$application->files // returns lala.
示例代码。
$applications = Application::get();
$application_files = applications->map->files;
官方文档https://laravel.com/docs/5.7/eloquent-mutators#defining-an-accessor