<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # 例子一 Model:Pay,付款記錄。表結構應該是這樣的: ~~~ user: id ... ... pay: id ... ... user_id ~~~ User 和 Pay 具有一對多關系,換句話說就是一個 User 可以有多個 Pay,這樣的話,只在 Pay 表中存在一個 `user_id` 字段即可。 `/app/models/User.php`: ~~~ class User extends Eloquent { protected $table = 'users'; public function hasManyPays() { return $this->hasMany('Pay', 'user_id', 'id'); } } ~~~ 然后,當我們需要用到這種關系的時候,該如何使用呢?如下: ~~~ $accounts = User::find(10)->hasManyPays()->get(); ~~~ 此時得到的 `$accounts` 即為 `Illuminate\Database\Eloquent\Collection` 類的一個實例。大家應該也已經注意到了,這里不是簡單的 `-> hasOneAccount` 而是 `->hasManyPays()->get()`,為什么呢?因為這里是 `hasMany`,操作的是一個對象集合。 相應的 belongsTo() 的用法跟上面一對一關系一樣: ~~~ class Pay extends Eloquent { protected $table = 'pays'; public function belongsToUser() { return $this->belongsTo('User', 'user_id', 'id'); } } ~~~ ## 總結 **查詢** ~~~ $uObj = $user->find(1); //查這個用戶下的所有pay記錄 $res = $uObj->hasManyPays(); //pay的記錄 dd($res->get()->toArray()); ~~~ **新增** ~~~ $uObj = $user->find(1); //新增個pay記錄 $pay->pname = '新增的pname'; //保存這個記錄 $res = $uObj->hasManyPays()->save($pay); //pay的記錄,新增的記錄 dd($res->toArray()); ~~~ **刪除** ~~~ $uObj = $user->find(2); //刪除和這個相關的 $res = $uObj->hasManyPays()->delete(); //返回修改的記錄個數,刪除的是pay里的記錄 dd($res); ~~~ **修改** ~~~ $uObj = $user->find(1); //關聯關系 $pObj = $uObj->hasManyPays(); $res = $pObj->update(['pname' => 'user_id為1的全部修改']); //返回修改的記錄個數,修改的是pay里的記錄 dd($res); ~~~ **聯合** ~~~ //找出2個對象 $uObj = $user->find(2); $pObj = $pay->find(1); //把pay(對)中的關聯id改為$uObj $pObj->belongsToUser()->associate($uObj); $res = $pObj->save(); //操作的成功與否 true/false dd($res); ~~~ **解除聯合** ~~~ $pObj = $pay->find(1); //把pay(多)中的關聯id改為NULL $pObj->belongsToUser()->dissociate(); $res = $pObj->save(); //操作的成功與否 true/false dd($res); ~~~ # 例子二 每個帖子有很多評論 **posts 表** | 鍵名 | 類型 | | --- | --- | | id | PK | | uid | FK users's id | | content | text | | created_at | timestamp | | updated_at | timestamp | **comments 表** | 鍵名 | 類型 | | --- | --- | | id | PK | | pid | FK posts's id | | uid | FK users's id | | content | text | | created_at | timestamp | | updated_at | timestamp | ## 實現 Post.php ~~~ function comments() { // 參數分別為 model, foreign_key, local_key return $this->hasMany(Comment::class, 'pid', 'id'); } ~~~ Comment.php ~~~ function post() { return $this->belongsTo(Post::class, 'pid', 'id'); //或如下:后兩個參數與Post中的參數順序相反 return $this->hasOne('App\\Post', 'id', 'pid'); } ~~~ ## 操作 `$post = Post::find(1);` ### 查 ~~~ //此用戶下的所有帖子 foreach ($post->comment as $comment) echo $comment->content; ~~~ 想通過限制post來達到只查詢comment的目的,結果集里不包含文章信息,那么你可以這樣寫: ~~~ $comment->whereIn('post_id',function($query){ return $query->select('id')->from('posts')->where('title','文章2'); })->get(); ~~~ ### 新建 **create開啟白名單或者指定黑名單** ~~~ $comment = Comment::create([ 'pid' => $post->getKey(), 'content' => '評論內容', 'uid'=>1, //如果有$user=User::find(1); 這邊就寫$user->getKey(); ]); ~~~ 使用關系來實現: ~~~ $post->comments()->create(['content' => '內容','uid'=>1]); 或 $comment = new Comment(['content' => 'A new comment.','uid'=>1]); $post->comments()->save($comment); 保存多條 $post->comments()->saveMany([ new Comment(['content' => 'A new comment.']), new Comment(['content' => 'Another comment.']), ]); ~~~ ### 刪除 ~~~ //刪除此用戶下的所有的帖子 $user->posts()->delete(); ~~~ ### 修改 ~~~ //鑒于發帖這種業務邏輯,還是不要使用關系這種方式來改了 //以下是示例代碼 foreach ($user->posts as $post) { $post->title = '修改后的'; $post->save(); //或者 $post->update(['title' => '修改后的']); } ~~~ ### 針對 BelongsTo 的 聯合、解除 ~~~ $comment = Comment::find(1); $post = Post::find(1); ~~~ #### 聯合 associate 下面的語句 會將 comment 中的 pid 改為 $post->getKey(); ~~~ $comment->post()->associate($post); $comment->save(); ~~~ #### 解除 dissociate 下面的語句 會將 comment 中的 pid 改為 NULL ~~~ $comment->post()->dissociate(); $comment->save(); //看數據表的設計有時候提示不能為null ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看