小编Ada*_*ert的帖子

Laravel Eloquent - 合并两个雄辩模型结果(不是集合)

我有一张库存变动表,其中显示了产品的历史记录(接收、移动位置等)

\n\n

我有两个计算的查询(通过总计):

\n\n
    \n
  1. 原始收到数量。
  2. \n
  3. 当前的实时数量(物品移动后)。
  4. \n
\n\n

这两个查询都返回相同模型的集合。它们的结果数量始终相同,并且 Product_id 也始终相同。唯一不同的部分是接收/实时数量,我想以某种方式将各个记录合并到一个新集合中。IE

\n\n

查询 1 中的单个记录:

\n\n
0 => StockMovement {#1602 \xe2\x96\xbc\n  #original: array:2 [\xe2\x96\xbc\n    "live_qty" => "8"\n    "product_id" => "2606598e-4150-461a-9e91-10d67cce8daa"\n  ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

查询 2 中的单个记录;

\n\n
0 => StockMovement {#1602 \xe2\x96\xbc\n  #original: array:2 [\xe2\x96\xbc\n    "received_qty" => "15"\n    "product_id" => "2606598e-4150-461a-9e91-10d67cce8daa"\n  ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我试图最终得到一个合并结果,如下所示:

\n\n
0 => StockMovement {#1602 \xe2\x96\xbc\n  #original: array:3 [\xe2\x96\xbc\n    "received_qty" => "15"\n    "live_qty" => "8"\n    "product_id" => "2606598e-4150-461a-9e91-10d67cce8daa"\n  ]\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想以一种不将 Product 对象转换为数组的方式来执行此操作,因为我需要嵌入其中的关系。

\n\n

目前,我对此进行了如下破解: …

php query-builder laravel eloquent laravel-query-builder

6
推荐指数
1
解决办法
1万
查看次数

Elasticsearch default_operator "AND" 未按预期工作

我已经使用“AND”默认运算符设置了我的查询字符串搜索。我的查询如下:

{
    "query": {
        "query_string" : {
            "query" : "Adam KT2 7AJ",
            "default_operator" : "AND"
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这能提供与下面相同的结果......但事实并非如此。

{
    "query": {
        "query_string" : {
            "query" : "Adam AND KT2 AND 7AJ",
            "default_operator" : "OR"
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然我看到 default_operator 对我的搜索结果产生了影响,但它并没有像我希望的那样工作。

例如:

查询 1:

  • Adam AND KT2 AND 7AJ, default_operator: or
  • 结果:1(如预期)
  • [1] 姓名:Adam Lambert,邮政编码 KT2 7AJ

查询2:

  • Adam KT2 7AJ, default_operator: and
  • 结果:0
  • (不是预期的。这应该产生与上面相同的结果?似乎anddefault_operator 在查询中产生与 AND 不同的结果)

查询3:

  • KT2 7AJ, default_operator: and
  • 结果:2
  • (正如预期的那样,只匹配邮政编码的两个部分) …

elasticsearch elasticsearch-dsl elasticsearch-query

6
推荐指数
1
解决办法
380
查看次数

Laravel Horizo​​n - 从一个主管运行多个队列

任何人都可以帮助在 Horizo​​n.php 中进行正确的配置,以使单个主管运行多个队列吗?我努力了:

'supervisor-1' => [
    'connection' => 'redis',
    'queue' => ['default', 'queue2'],
    'balance' => 'simple',
    'processes' => 10,
    'tries' => 3,
],
Run Code Online (Sandbox Code Playgroud)

也:

'supervisor-1' => [
    'connection' => 'redis',
    'queue' => 'default, queue2',
    'balance' => 'simple',
    'processes' => 10,
    'tries' => 3,
],
Run Code Online (Sandbox Code Playgroud)

第二个队列在地平线中正确显示,我可以向他们发送作业,但它们只是没有得到处理。

我在 Forge 上进行配置,并使用 Redis 和以下 queue.php 配置来设置我的队列:

'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => 'default', // Default Queue
        'retry_after' => 90,
        'block_for' => null,
    ],
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-queue laravel-horizon

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

在 Horizo​​n::terminate 并运行 Forge 守护进程后,Laravel Horizo​​n Supervisor 不会重新启动

Horizo​​n 运行良好,但直到最近,部署后,主管和队列工作人员不会再次启动,Horizo​​n GUI 显示“非活动”

为了让它们再次运行,我可以:

  • 从 forge 中重新启动守护进程工作程序
  • 重新启动主管/etc/init.d/supervisor restart

我的部署脚本包含php artisan horizon:terminate在其中。我还尝试过重置/清除及其组合。

当我在具有非活动地平线的命令中运行终止时,它似乎什么也没做。当我在 Horizo​​n Active 下运行相同的命令时,它会将其关闭,但守护进程不会重新启动 Supervisor。

守护进程在整个过程中运行没有任何错误。

应该终止并启动服务还是守护进程本身?

daemon redis laravel forge laravel-horizon

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

减少对外部 API 的身份验证调用 (Laravel 5.6)

我的应用程序需要从外部 API 收集数据。

  • 我正在使用 Guzzle。
  • 我的 API 方法被写入存储在库文件夹中的单独类中。
  • 我有一个模型和控制器用于将我的应用程序连接到 API 并将信息拉回我的数据库。

API 需要进行身份验证调用以在每次调用时检索令牌。这在 72 小时内有效,但目前我每次都打这个电话。

有什么方法可以在不将令牌保存到数据库的情况下减少所需的调用次数?

我看过有关为 API 创建服务提供程序的教程。这对我的问题有帮助吗?如果一个类只是在单个模型/控制器中使用并且几乎没有依赖关系,是否需要创建服务提供者?

任何人都可以就在 Larval 5 中将 REST api 布局到外部服务的最佳实践提供一些建议吗?

php api rest laravel eloquent

4
推荐指数
1
解决办法
1014
查看次数

Vue-检查用户是否处于脱机状态,然后在他们再次在线时显示div秒钟

我目前在定时循环上使用一个函数来检查用户是否下线:

created() {
   setInterval(() => {
        this.checkOnline();
   }, 30000);
}
Run Code Online (Sandbox Code Playgroud)

方法:

checkOnline(){
   this.onLine = navigator.onLine ? true : false;
}
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以在不使用计时器的情况下检测到这一点?

其次...

我试图显示1秒的警报来告诉用户他们已重新联机。当this.onLine为true时,div应该被隐藏。当它为false时,它也应该被隐藏,但是当它从false变为true时,我想显示div大约一秒钟,然后再次将其隐藏。我已经尝试过使用settimeout并使用观察程序,但是均未达到预期的效果。

编辑:

因此,让我到达的一种方法是:

 data() {
     return {
         onLine: navigator.onLine ? true : false,
     }
 }
Run Code Online (Sandbox Code Playgroud)

然后观察者显示返回的在线消息

watch: {
    onLine: function (val) {
        if(this.onLine === true){
            this.showBackOnline = true;
            setTimeout(()=>{ this.showBackOnline = false; }, 1000);
        }
    },
},
Run Code Online (Sandbox Code Playgroud)

除了使用专用的通知插件之外,还有没有比观察者更好的方法来实现此目的?

javascript vue.js vuejs2

3
推荐指数
1
解决办法
1215
查看次数

雄辩的 findOrFail()->get()

我知道这是一个菜鸟错误,但我可以问一下吗?

为什么

findOrFail()->get();
Run Code Online (Sandbox Code Playgroud)

或者

findOrFail()->first();
Run Code Online (Sandbox Code Playgroud)

返回整个集合,而不是仅仅失败?我知道的正确语法是:

findOrFail();
Run Code Online (Sandbox Code Playgroud)

然而最后一个意外的 ->get() 给我带来了一场噩梦!

php laravel eloquent

2
推荐指数
1
解决办法
8498
查看次数

Eloquent Delete - SQLSTATE[22007]: Invalid datetime format: 1292 截断不正确的 DOUBLE 值:

我收到此错误:

SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect DOUBLE value: '808498e7-a393-42f1-ab23-6ee89eb7040a' 
Run Code Online (Sandbox Code Playgroud)

尝试通过关系删除记录时,使用:

$delivery->stockMovements()->delete();
Run Code Online (Sandbox Code Playgroud)

原始查询显示为:

delete from `stock_movements` where `stock_movements`.`entity_id` = 10000005 and `stock_movements`.`entity_id` is not null and `stock_movements`.`company_id` = 8b11050c-612c-4922-8b34-d04d579e02a9
Run Code Online (Sandbox Code Playgroud)

我已经搜索并搜索过但找不到任何特定于此的东西,除了它可能与转换错误有关。也许与UUID有关?

迁移如下:

    Schema::create('deliveries', function (Blueprint $table) {
        $table->increments('id');
        $table->uuid('company_id');
        $table->string('delivery_type');
        $table->string('supplier_name');
        $table->string('supplier_ref')->nullable();
        $table->string('merchant_ref')->nullable();
        $table->string('carrier_name')->nullable();
        $table->string('status');
        $table->date('expected_delivery');
        $table->dateTime('completed_at')->nullable();
        $table->timestamps();
    });


    Schema::create('stock_movements', function (Blueprint $table) {
        $table->increments('id');
        $table->uuid('company_id');
        $table->uuid('product_id');
        $table->string('entity_type'); //can be order / delivery
        $table->string('entity_id'); //can be UUID / String / Integer
        $table->string('location_id')->nullable(); // can be warehouse_location / shipment_package / delivery_container …
Run Code Online (Sandbox Code Playgroud)

php mysql laravel eloquent

2
推荐指数
1
解决办法
8396
查看次数

谷歌工作表importData,importRange速度/间隔 - 改进它的方法?

根据谷歌文档(https://support.google.com/docs/answer/58515?hl=en),当前刷新/重新计算时间如下;

要更改某些Google表格功能更新的频率:

打开电子表格.单击文件>电子表格设置.在"重新计算"下,从下拉菜单中选择一个设置.单击保存设置.注意:外部数据函数按以下时间间隔重新计算:

ImportRange:30分钟ImportHtml,ImportFeed,ImportData,ImportXml:1小时GoogleFinance:2分钟

我们有什么方法可以加快速度吗?例如,删除单元格然后替换它将强制刷新数据.也许这可以通过脚本来完成.甚至可以单独使用脚本从另一个工作表中提取数据吗?

有没有人对如何做到这一点有任何想法?理想情况下,我希望每5分钟刷新一次.

非常感谢

google-sheets google-apps-script

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