模型关联一对多

数据库表

# 用户表
CREATE TABLE `user_test` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

# 订单表
CREATE TABLE `orders` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `user_test_id` int(10) unsigned NOT NULL,
  `order_number` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
# 测试数据
INSERT INTO `user_test` (`id`, `name`, `created_at`, `updated_at`) VALUES ('1', 'yaoxs', '2021-03-30 23:54:46', NULL);
INSERT INTO `orders` (`id`, `user_test_id`, `order_number`, `created_at`, `updated_at`) VALUES ('1', '1', 'yaoxs的订单编号1', NULL, NULL);
INSERT INTO `orders` (`id`, `user_test_id`, `order_number`, `created_at`, `updated_at`) VALUES ('2', '1', 'yaoxs的订单编号2', NULL, NULL);
INSERT INTO `orders` (`id`, `user_test_id`, `order_number`, `created_at`, `updated_at`) VALUES ('3', '1', 'yaoxs的订单编号3', NULL, NULL);

模型

app\Models

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class UserTest extends Model
{
    protected $table = 'user_test';
    /**
     * 获取该用户的所有订单
     */
    public function orders()
    {
        return $this->hasMany('App\Models\Order');
    }
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Order extends Model
{
    protected $table = 'orders';
}

路由

use Illuminate\Support\Facades\Route;
use App\Models\UserTest;
// 编写获取指定用户所有订单的方法
Route::get('/get-user-order/{user:id}', function(UserTest $user){
    // 用户ID不应该由用户输入这里只是为了演示
    dd($user->orders()->select('order_number')->get()->toArray());die;
});

访问:127.0.0.1:8000/get-user-order/1

array:3 [0 => array:1 ["order_number" => "yaoxs的订单编号1"
  ]
  1 => array:1 ["order_number" => "yaoxs的订单编号2"
  ]
  2 => array:1 ["order_number" => "yaoxs的订单编号3"
  ]
]
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 1
zahuang

dd+die,被赐死了两次

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!