更新laravel中的关系 [英] updating a relationship in laravel
问题描述
我有一个具有这种关系的模型
I have a model that has a relationship like this
public function users(){
return $this->belongsToMany(User::class);
}
public function latestUrlStatus(){
return $this->hasOne(UrlStatus::class)->latest();
}
从我的控制器中,我可以这样从many to many relationship
保存(无问题)
from my controller i can save from many to many relationship
like this (SUCCESS NO PROBLEM)
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);
}
}
但是当我添加此代码以从另一个关系中保存时
but when i add this code to save from another relation
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();
//THIS CODE UP TO LAST
$httpCode = check_http_header($request->input('url'));
$status = "UP";
$url = Url::with('latestUrlStatus','users')->findOrfail($id);
$updateUrl->latestUrlStatus()->status_code = $httpCode;
$updateUrl->latestUrlStatus()->status = $status;
$updateUrl->push();
if($updateUrl){
return new UrlsResource($updateUrl);
}
}
它不会更新最新的URL状态.抱歉,刚接触框架.预先感谢.
it doesnt update the latest url status. I'm sorry just new to framework. Thanks in advance.
推荐答案
将更新代码$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
实例,这就是您所需要的.
$updateUrl->latestUrlStatus()
return query Builder
instance, where has $updateUrl->latestUrlStatus
return UrlStatus
instance, thats what you need.
这篇关于更新laravel中的关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!