当前位置: 首页 > 知识库问答 >
问题:

Laravel 5-雄辩的关系

王高超
2023-03-14

我有以下三个表格:

 ------------------------------
| users  | projects  | clients |
|--------|-----------|-------- |
| id     | id        | id      |
| name   | client_id | name    |
|        | user_id   |         |
|        | name      |         |
 ------------------------------

所以基本上这种关系就像:

用户有许多项目
项目属性到客户端

我的问题是:
如何使用eloquent获得用户的所有客户端?

似乎我不能用户hasManyPass方法,因为在客户端表中没有project_id。

因此,我希望达到的目标是:

foreach($users as $user)
     foreach($user->clients as $client) //HOW TO SET UP THIS RELATION?
         foreach($client->projects($user)->get() as $project)

共有1个答案

颛孙镜
2023-03-14
    $users = User::with('projects')->get();
    
    // organize cleints' project and add for each user  
    foreach ($users as $user) {
        // order projects by client_id
        $projects = Collect($user->projects->toArray());
        $clients = $projects->groupBy('client_id');

        // keep projects data in 'projects' index 
        $temp = array();
        foreach($clients as $client => $projects){
            $temp[$client] = array('projects' => $projects);
        }

        // add clinets data for each user
        $user['clients'] = $temp;
    }

    // output
    foreach($users as $user)
        foreach($user->clients as $client)
            foreach($client['projects'] as $project)
                echo 'user-'.$project['user_id'].', clinet-'.$project['client_id'].', project-'.$project['name'].'<br>';

上面的代码为我生成了这个输出:

 类似资料:
  • 我有一个表事务与复合主键id,Nom,日期和一个表Cour与Nom作为主键和一个事务有关一个Cour。 我怎样才能得到一个有口才关系的特定交易的课程?

  • 我在我的Laravel项目中与雄辩的关系作斗争。 我的数据库中有一个“用户”表和一个“用户行”表。“用户行”表中有一个“用户id”字段,该字段与“用户”中的“id”字段相对应,属于典型的主-明细关系。 用户模型与用户线模型有很多关系。UserLine模型与用户模型具有belongsTo关系。 在我的应用程序中,我有一个包含多个用户行的用户表单。在表单提交期间,可以添加、更改或删除这些用户行。到目前

  • 我正在编写php代码,对于当前的项目,我正在使用laravel框架(带有雄辩的ORM)。在这个项目中,我创建了两个表:用户和任务。我想在这些表之间创建一个“一对多”的关系。因此,一个用户可以有许多任务。在Tasks类中,我创建了方法所有者(): 但是当我以前得到用户名的时候 我得到这个异常:未定义的属性:illumb\Database\Eloquent\Relations\BelongsTo::$

  • 我有三种模式——博客、帖子、评论。博客有很多帖子,帖子有很多评论 当我写作时 它会给所有的博客发帖子和评论。但我将如何获得那些由管理员用户创建的博客,即评论表中的用户id。在哪里写入

  • 我是Laravel5.2的新手,正在开发一个遗留系统,对雄辩有点困惑,希望有人能给我代码。 共有3个表格: 卡片类别卡片2类 卡片可以是许多类别的一部分,这些类别保存在cards2cat表中。 cards2cat表的结构如下 id(主键)图像(卡)类别 我想做的是在Cards模型中有一个方法,名为getCardsWithCategors,它返回Cards信息和category表中类别的名称。 ca

  • 我刚刚开始学习LaravelV3,我试图通过创建一个博客来了解eloquent的一对多关系。我的帖子与类别有多对一的关系(每个帖子都链接到一个类别)。 我有以下表格和以下字段: 帖子:id、标题、正文、创建日期、类别id 类别:id、名称 我有以下两种型号: 我想出了如何通过传递类别id来获得所有帖子: 我只是需要帮助,找出如何获得所有的职位,并得到他们的更正类别。因此,在视图中的一天结束时,我可