我有一个具有这种关系的模型
Sub HideRows()
With Sheet3
.Range("A11:A60").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
For Each Rng In .Range("A71:A120, A131:A180, A190:A239").Areas
If Rng(1) = "" Then
Rng.Offset(-6).Resize(58).EntireRow.Hidden = True
Else
Rng.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End If
Next Rng
End With
End Sub
从我的控制器中,我可以这样从public function users(){
return $this->belongsToMany(User::class);
}
public function latestUrlStatus(){
return $this->hasOne(UrlStatus::class)->latest();
}
保存(无问题)
many to many relationship
但是当我添加此代码以从另一个关系中保存
public function update(Request $request, $id)
{
$updateUrl = Url::findOrFail($id);
$updateUrl->url = $request->input('url');
$updateUrl->description = $request->input('description');
$updateUrl->users()->sync(array_pluck($request->input('selectedTags'), 'id'));
$updateUrl->save();
if($updateUrl){
return new UrlsResource($updateUrl);
}
}
它不会更新最新的URL状态。抱歉,刚接触框架。预先感谢。
答案 0 :(得分:2)
像这样将更新代码$updateUrl->latestUrlStatus()
更改为$updateUrl->latestUrlStatus
$updateUrl = Url::with('latestUrlStatus','users')->findOrfail($id);
$updateUrl->latestUrlStatus->status_code = $httpCode;
$updateUrl->latestUrlStatus->status = $status;
$updateUrl->push();
if($updateUrl){
return new UrlsResource($updateUrl);
}
$updateUrl->latestUrlStatus()
返回查询Builder
实例,其中有$updateUrl->latestUrlStatus
返回UrlStatus
实例,那就是您所需要的。
答案 1 :(得分:0)
您可以尝试
$updateUrl->latestUrlStatus()->save()
代替
$updateUrl->push();
$updateUrl->push
保存一个模型($ updateUrl)及其所有关系。如果它不起作用并且$updateUrl->latestUrlStatus->save()
起作用,那么您知道$updateUrl
不会将->latestUrlStatus()
识别为关系,可能是因为您使用了函数方法latestUrlStatus()
访问子模型,而不是魔术方法->latestUrlStatus