如果我有以下型号:
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;
}
哪个会返回先前从用户模型提供的数据?
这可能吗?怎么样?
答案 0 :(得分:0)
不能完全理解为什么将任务数据存储在用户模型上,但是我认为您的要求可以通过任务模型上的访问器方法来实现,只要将someDataFromExt设为公开即可。
<?php
class Task extends Model {
public function getExtDataAttribute()
{
return $this->user->someDataFromExt['taskID' . $this->id];
}
}