【轉】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 :一對多

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

Models\OrderModel中實現: 
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": "",
  }
}


belongsTo和hasOne 兩者相反,比如用戶表和訂單表:
  1.一個用戶記錄有多個訂單 用hasMany;
  2.一個訂單只有一個用戶,用belongsTo(一個訂單屬於一個用戶,查詢出用戶信息) ,好像也可以用hasone 一個訂單有一個用戶 。主要要寫對參數
  第一個參數是UserModel,第二個參數是本身OrderModel的外鍵,第三個參數是user表的鍵,意思就是OrderModel.user_id=UserModel.udid;

那么如下情況又該如何呢?
比如 用戶表有id,name;
訂單表有order_id ,user_id ,
那么根據用戶關聯訂單的時候,用hasMany(orderModel ,user_id,id)
根據訂單查詢用戶詳情 belongsTo(userModel,id,user_id)

from:https://www.cnblogs.com/php-linux/p/10640205.html


免責聲明!

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



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