<small id='2sNhG'></small><noframes id='2sNhG'>

    1. <i id='2sNhG'><tr id='2sNhG'><dt id='2sNhG'><q id='2sNhG'><span id='2sNhG'><b id='2sNhG'><form id='2sNhG'><ins id='2sNhG'></ins><ul id='2sNhG'></ul><sub id='2sNhG'></sub></form><legend id='2sNhG'></legend><bdo id='2sNhG'><pre id='2sNhG'><center id='2sNhG'></center></pre></bdo></b><th id='2sNhG'></th></span></q></dt></tr></i><div id='2sNhG'><tfoot id='2sNhG'></tfoot><dl id='2sNhG'><fieldset id='2sNhG'></fieldset></dl></div>

        <tfoot id='2sNhG'></tfoot>
      1. <legend id='2sNhG'><style id='2sNhG'><dir id='2sNhG'><q id='2sNhG'></q></dir></style></legend>
          <bdo id='2sNhG'></bdo><ul id='2sNhG'></ul>
      2. Laravel 多对多自引用表只能以一种方式工作

        时间:2023-09-24
        <i id='JXUW6'><tr id='JXUW6'><dt id='JXUW6'><q id='JXUW6'><span id='JXUW6'><b id='JXUW6'><form id='JXUW6'><ins id='JXUW6'></ins><ul id='JXUW6'></ul><sub id='JXUW6'></sub></form><legend id='JXUW6'></legend><bdo id='JXUW6'><pre id='JXUW6'><center id='JXUW6'></center></pre></bdo></b><th id='JXUW6'></th></span></q></dt></tr></i><div id='JXUW6'><tfoot id='JXUW6'></tfoot><dl id='JXUW6'><fieldset id='JXUW6'></fieldset></dl></div>

        1. <small id='JXUW6'></small><noframes id='JXUW6'>

            <tfoot id='JXUW6'></tfoot>

            • <legend id='JXUW6'><style id='JXUW6'><dir id='JXUW6'><q id='JXUW6'></q></dir></style></legend>

                <tbody id='JXUW6'></tbody>

              • <bdo id='JXUW6'></bdo><ul id='JXUW6'></ul>
                  本文介绍了Laravel 多对多自引用表只能以一种方式工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我已经建立了关系和模型如下:

                  I have set up the relationship and the models as below:

                  数据透视表架构

                  Schema::create('friend_user', function(Blueprint $table) {
                      $table->increments('id');
                      $table->integer('user_id')->unsigned();
                      $table->integer('friend_id')->unsigned();
                      $table->timestamps();
                  });
                  

                  数据透视表播种器(这定义了用户1"所属的两个友谊",一个是在 user_id 中指定了用户 1,另一个是在朋友 ID 中列出了用户 1):

                  pivot table seeder (this defines two 'friendships' to which user '1' belongs one where user 1 is specified in the user_id and the second where user 1 is listed in the friend id):

                      $friend_user = array(
                          array(
                              'id' => 1,
                              'user_id' => 1,
                              'friend_id' => 3,
                          ),
                          array(
                              'id' => 2,
                              'user_id' => 4,
                              'friend_id' => 1,
                          ),
                  
                      );
                  

                  用户模型

                  public function friends()
                  {
                   return $this->belongsToMany('User', 'friend_user', 'user_id', 'friend_id');
                  }
                  

                  这是 Taylor Otwell 在这里建议的:https://github.com/laravel/framework/issues/441

                  This is as suggested by Taylor Otwell here: https://github.com/laravel/framework/issues/441

                  这一切都有效,但是当我运行以下命令时,我只得到一个结果:

                  This all works but when I run the following command I get only one result:

                  foreach(Auth::user()->friends as $i) {
                      var_dump($i->id);
                  }
                  

                  这将返回值 '3' 但不是预期的 4.我理解为什么会发生这种情况(因为 user_id 不是friend_id)但是我怎样才能让它返回属于一个用户的所有朋友(即所有朋友)的集合,而不管连接的哪一端(user_id 或friend_id)用户是?

                  This returns the value '3' but not 4 as expected. I understand why this is happening (as the user_id is not the friend_id) but how can I get this to return a collection of all friends belonging to a user (ie all friendships) regardless of which end of the connection (user_id or friend_id) the user is?

                  推荐答案

                  使用新函数代替创建两条记录.

                  Instead of creating two records use a new function.

                  public function friends()
                  {
                    return $this->belongsToMany('User', 'friend_user', 'user_id', 'friend_id');
                  }
                  
                  // Same table, self referencing, but change the key order
                  public function theFriends()
                  {
                    return $this->belongsToMany('User', 'friend_user', 'friend_id', 'user_id');
                  }
                  
                  //You can then call opposite record(s) using:
                  foreach( Auth::user()->theFriends as $theFriends )
                  

                  我在我的项目中使用了这种方法,因此我可以更好地分离组织结果.

                  I used this approach in my project so I can have better separation for organizing the results.

                  这篇关于Laravel 多对多自引用表只能以一种方式工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:如何通过 Eloquent 查询原始数据? 下一篇:Laravel - 数据库、表和列命名约定?

                  相关文章

                  最新文章

                  1. <legend id='FvyZq'><style id='FvyZq'><dir id='FvyZq'><q id='FvyZq'></q></dir></style></legend>

                    <tfoot id='FvyZq'></tfoot>

                    <small id='FvyZq'></small><noframes id='FvyZq'>

                    <i id='FvyZq'><tr id='FvyZq'><dt id='FvyZq'><q id='FvyZq'><span id='FvyZq'><b id='FvyZq'><form id='FvyZq'><ins id='FvyZq'></ins><ul id='FvyZq'></ul><sub id='FvyZq'></sub></form><legend id='FvyZq'></legend><bdo id='FvyZq'><pre id='FvyZq'><center id='FvyZq'></center></pre></bdo></b><th id='FvyZq'></th></span></q></dt></tr></i><div id='FvyZq'><tfoot id='FvyZq'></tfoot><dl id='FvyZq'><fieldset id='FvyZq'></fieldset></dl></div>
                      <bdo id='FvyZq'></bdo><ul id='FvyZq'></ul>