gpt4 book ai didi

laravel - 如何实现 oneToMany 关系的附加/分离结构?

转载 作者:行者123 更新时间:2023-12-05 07:29:49 27 4
gpt4 key购买 nike

例如。 Region 和 City 是两个模型。关系定义如下:

Region.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Region extends Model
{
public function cities() {
return $this->hasMany('App\City');
}
}

City.php

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class City extends Model
{
public $timestamps = false;

public function region() {
return $this->belongsTo('App\Region');
}
}

区域可以有多个城市,但一个城市只能与一个区域相关联。为此,我有一个已经添加的城市列表,但想在区域的详细信息页面上将城市与区域附加在一起,就像我们有多对多关系一样。如何验证并不允许将城市附加到已经附加到任何其他区域的区域?

最佳答案

您需要在模型上创建自定义方法才能实现类似的目的。这是您可能希望如何执行此操作的示例

City.php

public function attachToRegion(Region $region) {
if ($this->region) {
throw new CityAlreadyAttachedException();
}

$this->update(['region_id' => $region->id]);
}

然后您将在您的存储库/服务/ Controller 中调用它,并在城市模型已经附加到区域模型时捕获异常。例如:

try {
$region = Region::first();
$city = City::first()->attachToRegion($region);
} catch (CityAlreadyAttachedException $e) {
// The city is already attached. Handle the error here
}

关于laravel - 如何实现 oneToMany 关系的附加/分离结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52556522/

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