将一个表的行数分配给另一个表的列

时间:2017-10-23 10:35:03

标签: php mysql laravel eloquent

我的情况:我有一个名为'staff'的表,其中包含各种成员。除此之外,我还有另一个名为'children'的表,其中包含成员的子项(使用外键'staff_id')。

现在:如何在我的员工表中添加一个名为'number_of_children'的列,其中包含'children'表中'staff_id'是我的职员名称的条目数?

附加:在儿童表中,我有一个列'考虑'。我只想考虑考虑设置为true的条目。有没有办法将其包含在模型的功能中?太棒了!

谢谢!

2 个答案:

答案 0 :(得分:1)

你需要员工和孩子之间的关系

class Staff extends Model
{
    public function children()
    {
        return $this->hasMany(App\Children::class);
    }
}

然后,您可以像这样查询孩子

$numberOfChildren = $staffMember->children()->count();

More information here.

答案 1 :(得分:1)

为什么有专门的列而不仅仅是动态计算它?这样您就不必担心每次更新等等。

staff模型上,只需为hasMany()模型添加children关系。

//Staff Model
public function children()
{
    return $this->hasMany('App\Children'); //Substitute Children for the actual name of the model
}

然后,您可以随时通过$staff->children->count()获取孩子。