Php 拉雷维尔(雄辩)

Php 拉雷维尔(雄辩),php,database,laravel,Php,Database,Laravel,我想知道如何使用拉威尔模型和雄辩的关系 我有这样的数据结构 UserTable username groups id 分组表 id name remark public function store(Request $request){ $member = new Member(); $member->username = $request->input('name'); $member->gender = $request->input('g

我想知道如何使用拉威尔模型和雄辩的关系

我有这样的数据结构

UserTable

username
groups
id
分组表

id
name
remark
public function store(Request $request){
    $member = new Member();
    $member->username = $request->input('name');
    $member->gender = $request->input('gender');
    $member->joindate = $request->input('joindate');
    $member->remarks = $request->input('remarks');
    if ($request->hasFile('photo')) {
        if ($request->file('photo')->isValid()) {
            $path = $this->upload($request);
        }
    }
    $member->save();

    foreach ($request->only('groups[]') as $key => $group){
        $pivot = new pivot();
        $pivot->user_id = ????? //how to get user id?
    }
}

public function upload(Request $request)
{
    $path = $request->file('photo')->store('profile');
    return $path;
}
id
username
id
name
remark
user_id
group_id
我的问题是如何显示用户组(用户可以分配到多个组) 以及如何计算分配给每个组的用户数

谢谢

更新

id
name
remark
public function store(Request $request){
    $member = new Member();
    $member->username = $request->input('name');
    $member->gender = $request->input('gender');
    $member->joindate = $request->input('joindate');
    $member->remarks = $request->input('remarks');
    if ($request->hasFile('photo')) {
        if ($request->file('photo')->isValid()) {
            $path = $this->upload($request);
        }
    }
    $member->save();

    foreach ($request->only('groups[]') as $key => $group){
        $pivot = new pivot();
        $pivot->user_id = ????? //how to get user id?
    }
}

public function upload(Request $request)
{
    $path = $request->file('photo')->store('profile');
    return $path;
}
id
username
id
name
remark
user_id
group_id
是这样吗?
以及如何获取当前保存的用户id(它具有自动增量列)。

您需要创建一个数据透视表,将每个用户分配到各自的组

因此,基本上您的表格如下所示:

用户表

id
name
remark
public function store(Request $request){
    $member = new Member();
    $member->username = $request->input('name');
    $member->gender = $request->input('gender');
    $member->joindate = $request->input('joindate');
    $member->remarks = $request->input('remarks');
    if ($request->hasFile('photo')) {
        if ($request->file('photo')->isValid()) {
            $path = $this->upload($request);
        }
    }
    $member->save();

    foreach ($request->only('groups[]') as $key => $group){
        $pivot = new pivot();
        $pivot->user_id = ????? //how to get user id?
    }
}

public function upload(Request $request)
{
    $path = $request->file('photo')->store('profile');
    return $path;
}
id
username
id
name
remark
user_id
group_id
组表

id
name
remark
public function store(Request $request){
    $member = new Member();
    $member->username = $request->input('name');
    $member->gender = $request->input('gender');
    $member->joindate = $request->input('joindate');
    $member->remarks = $request->input('remarks');
    if ($request->hasFile('photo')) {
        if ($request->file('photo')->isValid()) {
            $path = $this->upload($request);
        }
    }
    $member->save();

    foreach ($request->only('groups[]') as $key => $group){
        $pivot = new pivot();
        $pivot->user_id = ????? //how to get user id?
    }
}

public function upload(Request $request)
{
    $path = $request->file('photo')->store('profile');
    return $path;
}
id
username
id
name
remark
user_id
group_id
用户->组数据透视表

id
name
remark
public function store(Request $request){
    $member = new Member();
    $member->username = $request->input('name');
    $member->gender = $request->input('gender');
    $member->joindate = $request->input('joindate');
    $member->remarks = $request->input('remarks');
    if ($request->hasFile('photo')) {
        if ($request->file('photo')->isValid()) {
            $path = $this->upload($request);
        }
    }
    $member->save();

    foreach ($request->only('groups[]') as $key => $group){
        $pivot = new pivot();
        $pivot->user_id = ????? //how to get user id?
    }
}

public function upload(Request $request)
{
    $path = $request->file('photo')->store('profile');
    return $path;
}
id
username
id
name
remark
user_id
group_id
然后,您可以在用户模型上使用雄辩的关系来定义关系方法,如下所示:

class User extends Model {

    public function groups() {

        return $this->belongsToMany(Group::class, 'user_group_pivot_table_name', 'user_id', 'group_id');

    }

}
最后,您可以通过执行以下操作返回所有用户组的集合:

$user->groups();

关于雄辩的ORM的研究也是惊人的。快乐狩猎。

公共函数存储(请求$Request){$member=new member();$member->username=$Request->input('name');$member->gender=$Request->input('gender');$member->joindate=$Request->input('comments');if($Request->hasFile('photo')){if($Request->file('photo'))->isValid(){$path=$this->upload($request);}}}$member->save();foreach($request->only('groups[])作为$key=>$group){$pivot=new pivot();$pivot->user_id=?????}对吗?以及如何获取用户id(auto inc)?请参阅更新的答案!然后你可以通过foreach循环来浏览这个集合。至于你的评论,我想你是想存储一个头像?如果是这种情况,请确保上传文件后,您也会将该文件分配给用户,以便您知道要在其个人资料上显示的图像。使用Laravel的pivot表的优点在于它们的使用是透明的。用户模型似乎在与组模型通信,当然我们知道情况并非如此。您只需确保当用户“加入”一个新组时,您在透视表中创建了一个新条目来显示这一点。