如何在 Laravel 模型关系函数中应用条件

问题描述 投票:0回答:1

我正在尝试使用 Laravel11 模型中的关系方法来获取查询关系的结果 Department表有一个名为parent的字段,它的默认值为0

我写了一个 if 语句,但它总是返回 else 结果

这是我的代码

class Department extends Model
{
    use HasFactory;

    public function members() {
        
        if($this->parent==0)
            return $this->hasManyThrough(
                Profile::class,
                Department::class,
                'parent',
                'department_id'
            );
        else 
            return $this->hasMany(Profile::class,'department_id');
    } 
}
php laravel eloquent
1个回答
0
投票

下次您需要发布有关该问题的更多信息,...

所以这可能会有所帮助,...

可能是逻辑有问题。 hasManyThrough 关系是通过另一个中间模型或表的多对多关系。 如果您想基于条件定义简单的一对多关系,您应该使用常规的 hasMany 关系。

以下是如何修改代码来实现此目的:

php 复制代码 类 Department 扩展模型 { 使用 HasFactory;

public function members(){
    if($this->parent == 0) {
        return $this->hasMany(Profile::class, 'department_id');
    } else {
        // Assuming parent is a foreign key to the parent department
        return $this->belongsTo(Department::class, 'parent');
    }
}

} 在这个修改后的代码中:

如果parent字段为0,则返回一个hasMany关系给Profile。 如果parent字段不为0,则会返回与Department的belongsTo关系,假设parent是父部门中的外键。

© www.soinside.com 2019 - 2024. All rights reserved.