小编Ser*_*min的帖子

Laravel检查updateOrCreate是否执行了更新

我的控制器中有以下代码:

for($i=0; $i<$number_of_tourists; $i++) {

$tourist = Tourist::updateOrCreate(['doc_number' => $request['doc_number'][$i]],
$tourist_to_update);

}
Run Code Online (Sandbox Code Playgroud)

每次"updateOrCreate"有效时,它会执行以下三项操作之一:

1)更新模型instanse OR

2)创建并保存新的OR

3)保持一切不变(如果已存在具有此类值的模型).

我需要检查'updateOrCreate'是否已完成1(更新),然后执行一些代码.

我该怎么做?

先感谢您!

updates laravel laravel-events

13
推荐指数
2
解决办法
6705
查看次数

Laravel:字符串数据,右截断:1406数据对于列太长

我有一张带有'酒店'栏的桌子.该项目是在Laravel 5.4中创建的,因此我使用了迁移.

    $table->string('hotel', 50);
Run Code Online (Sandbox Code Playgroud)

这是MYSQL VARCHAR(50).它工作得很好,因为在我开发时,我使用的短名称如"HILTON NEW YORK 5 "*.

现在该项目正在进行生产,客户询问他们为什么不能输入长酒店名称.我用这样一个模拟的酒店名称测试了它"长长很长很长很长很长很长的酒店名称5星"

它给了我一个错误:

"SQLSTATE [22001]:字符串数据,右截断:1406对于第1行的列'hotel',数据太长"

我在Sequel Pro中打开了数据库并进行了更改

  • 首先到VARCHAR(255)
  • 然后到TEXT

在每次更改之后,我使用相同的"长长多长多长多长很长且非常非常长的酒店名称5开始"进行测试并得到相同的错误(见上文).

我已经检查了列的类型

SHOW FIELDS FROM table_name
Run Code Online (Sandbox Code Playgroud)

它给了我

领域| 类型

酒店| 文本

所以字段的类型确实是"文本"(65 535个字符).

也许它与Laravel Migration文件(见上文)有某种联系,我在开始时设置了VARCHAR(50)?但我无法在生产中重新运行迁移,因为该表现在有数据.

非常感谢任何帮助.


更新: 我发现它实际上在DB中保存了这么长的酒店名称.但是每次提交表单后用户仍然会遇到这个恼人的错误......

php mysql text types laravel

12
推荐指数
3
解决办法
3万
查看次数

Laravel/PHP dd()在Chrome开发人员工具中显示非结构化数组

我注意到在Laravel的Controller中写作:

dd($array) 
Run Code Online (Sandbox Code Playgroud)

在Chrome Developer Tools(chome 61.0.3163.91 64位,MAC OS)中输出一个未结构化的数组视图.

在此输入图像描述

在它之前是这样的(至少在我看来它是这样的): 在此输入图像描述

我有'错误的记忆'吗?

或者,如果dd()确实在devtools中输出结构化数组,我该如何将它带回来?

php dd google-chrome-devtools

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

Laravel(或PHP / MySQL?)减少小数点后的浮点数

也许这是由于我对这些领域缺乏知识而引起的一个更普遍的MySQL或PHP问题,但是...

所以我在Laravel 5.4上有一个应用程序,数据库是MySQL 5.7.17

我在talbe中有一列,是通过迁移创建的:

$table->float('operator_price', 9, 2)->nullable()->change();
Run Code Online (Sandbox Code Playgroud)

(根据Laravel docs的说法,这应意味着列的类型为“ FLOAT”,总位数为9,小数点后为2) 在此处输入图片说明

当用户在表单字段中输入1000.25并保存-它保存为“ 1000.25”时,

但是,如果用户输入10000.25-它会另存为“ 10000.2”。

因此,如果数字超过9999,则会截断最后一位数字。

可能是什么原因,我该如何解决?

谢谢。


更新:我已经从巡回演出中显示了栏目;

它显示列“ operator_price”的类型为“ float”:

在此处输入图片说明

php mysql floating-point laravel

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

我已将Laravel查询生成器分配给一个变量。使用时会改变

这是一个为什么的问题,而不是操作方法:)

我已将查询巨石分配给变量$ query:

$query = table::where(['id'=>1, 'this_version'=> 1]);
$versions['slug1'] = $query->select('tourist_id', 'tourist_version')->get()->toArray();
print_r($versions);
Run Code Online (Sandbox Code Playgroud)

输出带有2(!)子数组的数组:

Array
(
    [slug1] => Array
        (
            [0] => Array
                (
                    [tourist_id] => 1
                    [tourist_version] => 1
                )

            [1] => Array
                (
                    [tourist_id] => 2
                    [tourist_version] => 1
                )

        )

)
Run Code Online (Sandbox Code Playgroud)

但是,如果我在$ query声明和获取$ version [2]数组之间使用$ query添加另一行,我的$ version [2]输出将缩短为一维数组:

$query = previoustour2_tourist::where(['tour2_id'=>$tour->id, 'this_version'=> 1]);
// Added line:
$versions['slug0'] = $query->select('version_created')->first()->version_created;
//
$versions['slug1'] = $query->select('tourist_id', 'tourist_version')->get()->toArray();
print_r($versions);
Run Code Online (Sandbox Code Playgroud)

输出(注意slug1现在只有1个嵌套数组):

Array
(
    [slug0] => 2017-08-08 08:25:26
    [slug1] => Array
        (
            [0] …
Run Code Online (Sandbox Code Playgroud)

builder query-builder laravel laravel-query-builder

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

C++无法引用地图的键

#include <algorithm>
#include <iostream>
#include <vector>
#include <map>
#include <string>

using namespace std;

int main() {
    int steps;
    map<string, string> countries;
    cin >> steps;
    for (int i = 0; i < steps; ++i) {
        string command;
        cin >> command;
        if(command == "CHANGE_CAPITAL") {
            for(auto& s : countries) {
                string& old_country = s.first;
                string& old_capital = s.second;
            }
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

你好!当我尝试编译此代码时,它给了我错误:

'basic_string <...>'类型的绑定值引用类型'basic_string <...>'drop'const'限定符

对于字符串

string& old_country = s.first;
Run Code Online (Sandbox Code Playgroud)

为什么会这样?(它不会为下一个字符串提供此错误 - 我通过引用来协助"s.second").

编译器是ISO C++ 1y(-std = c ++ 1y).

谢谢.

c++ stdmap

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

PHP双引号

我有这个代码:

<?php

$attribute = 'name';
$value = 'John';

print_r("$attribute$value");
Run Code Online (Sandbox Code Playgroud)

它输出:

nameJohn
Run Code Online (Sandbox Code Playgroud)

我想继续使用""(双引号)输出:

name_value: John
Run Code Online (Sandbox Code Playgroud)

我试过了:

print_r("$attribute_value: $value");
Run Code Online (Sandbox Code Playgroud)

但当然它不起作用(没有变量$ attribute_value).

我该怎么做?

php printing double-quotes

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