从其关系返回额外的字段

时间:2018-01-14 07:57:29

标签: laravel laravel-5.5

在我的系统中,当用户发送消息时,它会同时创建一个任务。任务描述是消息的主体。

任务和消息之间存在一对一的关系。

Task.php

class Task extends Model
{
    public function message()
    {
        // one-to-one hasOne belongsTo
        return $this->belongsTo('App\Message'); // CAN NEVER be null, it MUST have an associated message
    }

当我在/api/tasks/{task}的api.php端点获取任务时,它会调用TaskController@show,这就是:

public function show(Task $task)
{
    return $task->with([
        'moments',
        'message.body as descript' <<<<<<< psuedo-code
    ]);
}

我简化了这个例子。所以这不完全是我的真实案例,因为在上面我也可以回复这个消息。我真正的回报是:

public function show(Pet $pet)
{
    return $pet->load([
        'users',
        'tasks' => function($query) {
            $query->with([
                'moments',
                'upcomingAction',
                'message.body as descript' <<<<<<<<<< pseudo-code
            ]);
        }
    ]);
}

是否可以在返回的Task中添加额外的字段“descript”?

最诚挚的谢谢

1 个答案:

答案 0 :(得分:1)

您需要将新属性附加到任务模型append in Laravel

protected $appends='descript';

public function getDescriptAttribute()
{
    return 'something';

   //you have access to other attributes via $this->attributes['name']
}