<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] # 例子1 顧名思義,這描述的是兩個模型之間一對一的關系。這種關系是不需要中間表的。 假如我們有兩個模型:User 和 Account,分別對應注冊用戶和消費者,他們是一對一的關系,那么如果我們要使用 Eloquent 提供的一對一關系方法,表結構應該是這樣的: ~~~ user: id ... ... account_id account: id ... ... user_id ~~~ 假設我們需要在 User 模型中查詢對應的 Account 表的信息,那么代碼應該是這樣的。 `/app/models/User.php`: ~~~ class User extends Eloquent { protected $table = 'users'; public function hasOneAccount() { return $this->hasOne('Account', 'user_id', 'id'); } } ~~~ 然后,當我們需要用到這種關系的時候,該如何使用呢?如下: `$account = User::find(10)->hasOneAccount;` 此時得到的 `$account` 即為 `Account` 類的一個實例。 這里最難的地方在于后面的兩個 foreign_key 和 local_key 的設置,大家可以就此記住:在 User 類中,無論 hasOne 誰,第二個參數都是 `user_id`,第三個參數一般都是 `id`。由于前面的 `find(10)` 已經鎖定了 id = 10,所以這段函數對應的 SQL 為: `select * from account where user_id=10`。 這段代碼除了展示了一對一關系該如何使用之外,還傳達了三點信息,也是我對于大家使用 Eloquent 時候的建議: 每一個 Model 中都指定表名 has one account 這樣的關系寫成 `hasOneAccount()` 而不是簡單的 `account()` 每次使用模型間關系的時候都寫全參數,不要省略 相應的 ~~~ class Account extends Eloquent { protected $table = 'accounts'; public function belongsToUser() { return $this->belongsTo('User', 'user_id', 'id'); } } ~~~ ## 總結 **查詢** ~~~ $res = User::find(2)->hasOneAccount(); dd($res->get()->toArray()); ~~~ **新增** ~~~ $account->name = "xjd"; $res = User::find(3)->hasOneAccount()->save($account); //顯示的是account表新增的 dd($res->toArray()); ~~~ 2個都新建 ~~~ $uObj = $user->create([ 'name' => 'u的name', ]); $account = new Account(['name' => 'A的name']); $res = $uObj->hasOneAccount()->save($account); //返回account的對象 dd($res); ~~~ **刪除** ~~~ $res = User::find(3)->hasOneAccount()->delete(); //返回修改的條目,user中的不會刪除 dd($res); ~~~ **更改** ~~~ //獲取到關聯的消息 $userObj = User::find(3); $account = $userObj->hasOneAccount(); //改的是account表 $res = $account->update(['name' => "account的name修改"]); //返回修改的條目 dd($res); ~~~ # 例子2 每個用戶有一個頭像,存放于avatars表中 **users 表** | 鍵名 | 類型 | | --- | --- | | id | PK | | username | varchar(100) | | password | varchar(100) | | created_at | timestamp | | updated_at | timestamp | **avatars 表** | 鍵名 | 類型 | | --- | --- | | id | PK | | uid | FK users's id | | path | varchar(200) | | created_at | timestamp | | updated_at | timestamp | ## 實現 User.php ~~~ function avatar() { //參數分別為 model, foreign_key, local_key return $this->hasOne('App\\Avatar', 'uid', 'id'); } ~~~ Avatar.php ~~~ function user() { //后兩個參數與User中的參數順序相反 return $this->belongsTo('App\\User', 'id', 'uid'); } ~~~ ## 操作 `$user = User::find(1);` ### 查 `echo $user->avatar->path;` ~~~ //上面語句可能會報錯,因為沒有校驗avatar是否存在 $avatar = $user->avatar; echo !empty($avatar) ? $avatar->path : ''; ~~~ ### 新建 **create開啟白名單或者指定黑名單** ~~~ $user->avatar()->create(['path' => 'attachments/1.jpg']); 或者 $avatar = Avatar::create([ 'uid' => $user->getKey(), 'path' => 'attachments/1.jpg', ]); 或者 $avatar = new Avatar(['path' => 'attachments/1.jpg']) $user->avatar()->save($avatar) ~~~ **上面的這些新建方法可以新建與此user相關的無數條avatar,為了確保一條,需要創建前需先查詢是否存在記錄。(因為一對一、一對多關系本身的界線就很模糊)** ### 修改 `$user->avatar()->update(['path' => '/www/website/project_name/attachments/1.jpg']);` //如果有多條,則修改第一條(但是為什么會有多條,因為create太多了?) ### 刪除 ~~~ $user->avatar()->delete(); //刪除找到的第一條 ~~~ `$user`里面的不會刪除,關聯的表中的會被刪除
                  <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>

                              哎呀哎呀视频在线观看