前提:訂單表(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)