检索模型时添加自定义属性

时间:2018-10-03 12:09:34

标签: php laravel

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

2 个答案:

答案 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