【发布时间】:2019-11-18 12:30:36
【问题描述】:
我有这些相关的表:
[Template] ---- [HasOne]--> [Checklist] ---- [HasMany]--> [Items]
我想知道如何在一个关系过程中更新这些相关数据,以便顺利完成。
这是我的模型:
模板:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Template extends Model
{
protected $table = 'templates';
protected $fillable = [
'name'
];
public function checklist(){
return $this->hasOne(Checklist::class,'template_id');
}
}
清单
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Item;
use Carbon\Carbon;
class Checklist extends Model
{
protected $table = 'checklists';
protected $fillable = [
'template_id',
'description',
'due_interval',
'due_unit'
];
public function template(){
return $this->belongsTo(Template::class,'template_id');
}
public function items(){
return $this->hasMany(Item::class,'checklist_id');
}
}
物品
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Carbon\Carbon;
class Item extends Model
{
protected $table = 'items';
protected $fillable = [
'description',
'urgency',
'due_interval',
'due_unit'
];
public function checklists(){
return $this->belongsTo(Checklist::class,'checklist_id');
}
}
这是我的模板控制器:
public function update(Request $request,$templateId)
{
$req = json_decode($request->getContent(),true);
$data = $req['data'];
$findtemplate = Template::find($templateId)->first();
$exetemplate = $findtemplate->update(
[
'name' => $data['name']
]
);
var_dump('Update Template: ',$exetemplate);
$exechecklist = $findtemplate->checklist()->update(
[
'description' => $data['checklist']['description'],
'due_interval' => $data['checklist']['due_interval'],
'due_unit' => $data['checklist']['due_unit']
]
);
var_dump('Update Checklist: ',$exechecklist);
$execitem = $findtemplate->checklist()->items()->update(
[
'description' => $data['items']['description'],
'urgency' => $data['items']['urgency'],
'due_interval' => $data['items']['due_interval'],
'due_unit' => $data['items']['due_unit']
]
);
var_dump('Create Items: ',$execitem);
}
上面的代码显示了这些错误:
string(17) "更新模板:" bool(true) string(18) "更新 清单:“ int(0) 调用未定义的方法 照亮\数据库\雄辩\关系\HasOne::items() (1/1) BadMethodCallException 调用未定义的方法 Illuminate\Database\Eloquent\Relations\HasOne::items()
我想用最佳实践方式更新这些相关表。这个怎么做?请帮忙?
【问题讨论】:
-
你的代码有效吗?
-
不,不是,我只是客串,一定是这样。