小编mat*_*iku的帖子

Eloquent:如何加入直接相关的表和间接相关的表?

为了演示我的问题,我创建了一个虚构的数据库,包含这4个表(定义为Eloquent模型):User,Product,ShoppingItem(short:Item),Order ; 与他们所有相关的关系.(此处仅包括用户的完整性)
产品:

  • ID
  • 名称
  • 的hasMany(项)

命令:

  • ID
  • 用户身份
  • 日期
  • 的hasMany(项)

项目:

  • ID
  • PRODUCT_ID
  • ORDER_ID
  • 属于关联(产品)
  • 属于关联(订单)

因此,只要客户购买某些产品,就会创建(购物)商品记录.一个订购(购物卡丁车)创建为好,含有1个或多个项目属于只有一个客户(用户)和他目前的购物过程.

现在这个问题是关于产品清单和分析其"成功"的方法.他们多久卖一次,什么时候卖掉?

例如,我可以使用以下查询来获取单个产品的所有订单,从而计算它们的销售频率:

$orders = Order::whereHas('items', function ($query) use ($id) {
    $query->where('product_id', $id) 
          ->where('date', '<', Carbon::now());
})->orderBy('date', 'desc')->get();
Run Code Online (Sandbox Code Playgroud)

此外,我可以通过以下方式获得所售产品的所有产品清单:

$products = Products::withCount('items')
                    ->orderBy('item_count', 'desc');
Run Code Online (Sandbox Code Playgroud)

但是我希望得到所有产品的清单,按照上次订购(购买)的日期排序.该结果必须是Eloquent查询或Query Builder集,以便我可以对其使用分页.

我在我的产品模型中定义了一个Mutator,如下所示:

public function getLastTimeSoldAttribute( $value ) {

    $id = $this->id;

    // get list of plans …
Run Code Online (Sandbox Code Playgroud)

mysql laravel eloquent laravel-5.2 laravel-5.3

5
推荐指数
1
解决办法
880
查看次数

Workbox 的预缓存清单文件在 Laravel Mix 设置中包含无效的 URL 字符串

我正在使用Workbox 3.0 (webpack-plugin) 和Laravel Mix (5.6) 来自动生成一个 ServiceWorker 文件。

在运行 webpack 编译器时,Workbox 为预缓存资产生成的清单文件如下所示:

self.__precacheManifest = [
  {
    "revision": "89c25ce71806a695a25e",
    "url": "//js/app.js"
  },
  {
    "revision": "89c25ce71806a695a25e",
    "url": "//css/app.css"
  }
];
Run Code Online (Sandbox Code Playgroud)

显然,URL 字符串是错误的,会导致实际网页出现错误。

这是我的webpack.mix.js :(相关部分)

const {InjectManifest} = require('workbox-webpack-plugin')
mix.webpackConfig({
  plugins: [
    new InjectManifest({
      swSrc: './resources/assets/js/sw.js'
    })
  ]
})
Run Code Online (Sandbox Code Playgroud)

虽然这里使用InjectManifest 进行预缓存以及我自己的动态缓存,但使用GenerateSW插件时也会发生同样的情况。

和我的源代码sw.js

workbox.precaching.precacheAndRoute(self.__precacheManifest || [])
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?如果我手动修改precacheManifest,它工作正常:

self.__precacheManifest = [
  {
    "revision": "89c25ce71806a695a25e",
    "url": "./js/app.js"
  },
  {
    "revision": "89c25ce71806a695a25e",
    "url": "./css/app.css"
  } …
Run Code Online (Sandbox Code Playgroud)

webpack laravel-mix workbox workbox-webpack-plugin

5
推荐指数
1
解决办法
2154
查看次数