我正在尝试使用 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');
}
}
下次您需要发布有关该问题的更多信息,...
所以这可能会有所帮助,...
可能是逻辑有问题。 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是父部门中的外键。