Laravel5.5 开发笔记

1. with 用法(预加载)

// Model User 有一个 items 方法,对应的 Model 中又有一个 product 和 productSku 方法
Auth::user()->with(['items.product', 'items.productSku'])->get();

// Model User 有一个 productSku 方法,对应的 Model 中又有一个 product 方法
Auth::user()->with(['productSku.product'])->paginate();

2. load 用法(预加载)

// 一般用在 单条 数据
// Model Order 有一个 items 方法,对应的 Model 中又有一个 productSku  和 product 方法
return view('orders.show', ['order'=> $order->load(['items.productSku', 'items.product'])]);

3. associate用法

更新 belongsTo 关联

$item->product()->associate($sku->product_id);
$item->productSku()->associate($sku);

4. 数据库事物

$order = DB::transaction(function () use ($user, $address, $remark, $items) {
    // set or update or delete ... database
});

5. 容器

容器是现代 PHP 开发的一个重要概念,Laravel 就是在容器的基础上构建的。我们将支付操作类实例注入到容器中,在以后的代码里就可以直接通过app('alipay') 来取得对应的实例,而不需要每次都重新创建。

我们通常在 AppServiceProviderregister() 方法中往容器中注入实例:

app/Providers/AppServiceProvider.php

public function register()
    {
        // 往服务容器中注入一个名为 alipay 的单例对象
        $this->app->singleton('alipay', function () {
            $config = config('pay.alipay');

            // 调用 Yansongda\Pay 来创建一个支付宝支付对象
            return Pay::alipay($config);
        });
    }

代码解析:

  • $this->app->singleton() 往服务容器中注入一个单例对象,第一次从容器中取对象时会调用回调函数来生成对应的对象并保存到容器中,之后再去取的时候直接将容器中的对象返回。

调用

>>> app('alipay')
讨论数量: 0

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!