gpt4 book ai didi

php - Laravel:更新 hasMany/BelongsTo 关系

转载 作者:行者123 更新时间:2023-11-29 21:10:13 26 4
gpt4 key购买 nike

我有一个主表jobs,在单独的表job_location 中有多个位置。现在,如果从 job_location 找到额外的行,我将无法更新/删除。现在为什么我说 DELETE 是因为 sync() 做到了这一点,但它与多对多关系有关。我是 Laravel 的新手,只是想找到一种 Eloquent 方法来实现这一点,否则删除所有行并插入可以轻松完成,或者更新每行并删除剩余的也是一个选项,但我想知道 Laravel 有这方面的东西。

在每个请求中,我都会得到多个工作地点(城市、电话号码、地址未更改/已更改),这会造成麻烦。

一些代码截图:

模型:[Job.php]

class Jobs extends Model
{
protected $fillable = [
'job_id_pk', 'job_name','salary'
];


public function joblocation() {
return $this->hasMany('\App\JobLocation', 'job_id_fk', 'job_id_pk');
}

}

模型:[JobLocation.php]

class JobLocation extends Model
{
protected $fillable = [
'jobl_id_pk', 'job_id_fk','city', 'address', 'phone_number'
];


public function job() {
return $this->belongsTo('\App\Jobs', 'job_id_fk', 'job_id_pk');
}

}

Controller :[JobController.php]

function jobDetail() {

if($params['jid']) {
// update
$obj = \App\Jobs::find($params['jid']);
$obj->job_name = $params['name'];
$obj->salary = $params['salary'];
$obj->save();
} else {
// create new
$data = array(
'job_name' => $params['name'],
'salary' => $params['salary'],
);
$obj = \App\Jobs::create($data);
}

// don't bother how this $objDetail has associative array data, it is processed so
foreach ($params['jobLocations'] AS $key => $objDetail) {
$jobLoc = new \App\JobLocation;
$jobLoc->city = $objDetail['city'];
$jobLoc->phone_number = $objDetail['phone_number'];
$jobLoc->address = $objDetail['address'];

$jobLoc->job()->associate($obj);
$obj->jobLoc()->save($jobLoc);
}

}

通过这种方法,我可以保存所有工作地点,但我也使用相同的功能进行更新。请告诉我如何更新 jobLocations(如果存在)。我可以放弃以前的条目,但如果以前的条目得到更新并输入新的条目,或者如果我们有额外的条目,它们会被删除,那就太好了。我知道听起来很奇怪,但仍然引导我前进。

最佳答案

是的,您不能使用相同的功能,请执行此操作

$jobs =   \App\Jobs::find($params['jid']);

foreach ($params['jobLocations'] as $key => $objDetail) {
$joblocation = $jobs->joblocation->where('jobl_id_pk', $objDetail['some_id'])->first();

//here update you job location

$joblocation->save();
}

关于php - Laravel:更新 hasMany/BelongsTo 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36448964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com