laravel belongsTo使用


 

前提:訂單表(order)和用戶表(user)

表結構: 
order

CREATE TABLE `order` ( `id` char(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '訂單號', `user_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '用戶id', UNIQUE KEY `id` (`id`), KEY `user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='訂單表';

 

user

CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用戶id', PRIMARY KEY (`id`), `username` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '姓名', `password` char(60) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '密碼', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=10009866 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用戶表'

 

**表關系:**user->order :一對多

需求:在查看訂單詳情時顯示下單用戶

實現: 
1、當order表中外鍵為user_id user表主鍵為id時

public function user() { return $this->belongsTo('Models\User'); }

 

 

2、當order表中外鍵為user_id user表主鍵為uid

public function user() { return $this->belongsTo('Models\User', 'user_id', 'uid'); }

 

 

返回結果:

{
  "id": 17021423166486, "user_id": 10000003, "user": { "id": 10000003, "username": "", } }

beyondsTo和hasOne 兩者相反,比如用戶表和訂單表,一個用戶記錄有多個訂單 用hasMany 一個訂單只有一個用戶,用beyondsto 一個訂單屬於一個用戶,查詢出用戶信息
好像也可以用hasone 一個訂單有一個用戶 。主要要寫對參數
第一個參數是外鍵,就是第一個參數那個model表的鍵 等於第三個參數我本身的鍵的值
比如 用戶表有id name
訂單表有order_id ,user_id ,

那么根據用戶關聯訂單的時候,用hasmany(orderModel ,user_id,id)
根據訂單查詢用戶詳情 beyondsto(userModel,id,user_id)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM