gpt4 book ai didi

laravel - Eloquent morphOne 关系不限于一种关系

转载 作者:行者123 更新时间:2023-12-04 11:06:03 29 4
gpt4 key购买 nike

我在使用 Eloquent 时遇到问题 morphOne创建新条目而不是更新已经存在的条目的关系。

基本上我有很多模型(例如,让我们说 PersonBuilding )都需要一个位置,所以我创建了一个 Location模型:

class Location extends Eloquent {

public function locationable()
{
return $this->morphTo();
}

}

然后在我的其他模型中,我有这个:
class Person extends Eloquent {

// ...

/**
* Get the person's location
*
* @return Location
*/
public function location()
{
return $this->morphOne('Location', 'locationable');
}

// ...
class Building extends Eloquent {

// ...

/**
* Get the building's location
*
* @return Location
*/
public function location()
{
return $this->morphOne('Location', 'locationable');
}

// ...

当我运行以下测试代码时,它会很好地创建位置条目,但如果我重复它,它会创建更多条目。
$person = Person::first();

$loc = new Location;

$loc->lat = "123";
$loc->lng = "321";

$person->location()->save($loc);

我在这里做错了吗?我本来以为 morphOne将其限制为每种类型一个条目,因此下表中的最后一个条目不应该存在:
+---------------------+--------------------------+
| locationable_id | locationable_type |
+---------------------+--------------------------+
| 2 | Building |
| 3 | Building |
| 2 | Person |
| 2 | Building |
+---------------------+--------------------------+

最佳答案

也许我参加聚会迟到了,但这对我有用!

# Do we have location already?
if($person->location) {
return $person->location()->update($location);
}
return $person->location()->create($location);

关于laravel - Eloquent morphOne 关系不限于一种关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24694761/

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