Laravel 5-将变量传递给关系模型

时间:2018-08-04 17:35:26

标签: php laravel-5 eloquent laravel-5.6

如果我有以下型号:

class User extends Model{
    protected $someDataFromExt = ['taskID0' => 'test', 'taskID1' => 'ting'];
    public function tasks() { return $this->hasMany('Task'); }
}

class Task extends Model{
    protected $appends = ['ext_data'];
    public function user() { return $this->belongsTo('User'); }
    public function getExtDataAttribute(){ return $this->external_data; }
}

我想在执行以下操作时:$tasks = auth()->user()->tasks->all();(根据任务ID)将$user->someDataFromExt传递给任务模型,因此稍后我可以在$tasks变量中访问:

foreach($tasks as $task){
    echo $task->ext_data;
}

哪个会返回先前从用户模型提供的数据?

这可能吗?怎么样?

1 个答案:

答案 0 :(得分:0)

不能完全理解为什么将任务数据存储在用户模型上,但是我认为您的要求可以通过任务模型上的访问器方法来实现,只要将someDataFromExt设为公开即可。

<?php
class Task extends Model {
     public function getExtDataAttribute()
     {
          return $this->user->someDataFromExt['taskID' . $this->id];
     }
}