gpt4 book ai didi

php - 与外国风俗的 Eloquent 关系-其他关键值(value)

转载 作者:行者123 更新时间:2023-12-04 14:31:04 31 4
gpt4 key购买 nike

有没有办法根据自定义的外键值创建一个 Eloquent 关系函数?

例如我有水平关系:

public function level(){
return $this->belongsTo(Level::class, 'level_number', 'number');
}

我想做这样的事情:

public function nextLevel(){
return $this->belongsTo(Level::class)->where('number', '=', $this->level_number + 1);
}

这可能吗,还是我必须编写原始查询?

最佳答案

我遇到了类似的情况,所以我对 Laravel 基本代码进行了一些研究,并找到了一个非常好的和干净的解决方案。

Laravel (5.8) 在 BelongsTo class最后使用这样的东西:

$this->query->where($table.'.'.$this->ownerKey, '=', $this->child->{$this->foreignKey});

$this->child 是一个保存 Eloquent 对象的变量,所以我们可以使用 Eloquent 的魔法 getters .

解决方案是创建一个任意名称的 getter,并将其用作第二个参数,作为关系声明中的外键:

public function level()
{
return $this->belongsTo(Level::class);
}

public function nextLevel()
{
return $this->belongsTo(Level::class, 'next_level_id');
}

public function getNextLevelIdAttribute()
{
// any logic to get id (static value, db query etc..)
return $this->id + 1;
}

关于php - 与外国风俗的 Eloquent 关系-其他关键值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33457115/

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