使用Laravel 5.4和PHP 7.0+,mysql 5.7有一个查询,返回一个包含正确信息的数组。
propoffice模型
namespace App\models\core;
class propoffice extends \App\Model
{
protected $primaryKey = 'officeID';
}
这是我的第一个问题
$officeList=propoffice::select('officeID','xOfficeID')
->orderBy('officeID','desc')
->take(1)
->get();
有很多记录,但让我们看看其中一个。这就是为什么我现在要拿(1)的原因。
dd($officeList)
我懂了
#attributes: array:2 [▼
"officeID" => "123"
"xOfficeID" => "123"
]
#original: array:2 [▼
"officeID" => "123"
"xOfficeID" => "123"
]
运行循环
foreach($officeList as $the){
echo $the->officeID;
}
我看到的不是123,而是0代表officeID字段,但我看到的是123代表xOfficeID字段。
我没有运行javascript或jquery来更改值或进行任何复杂的操作。
在数组和输出之间没有其他代码,因此它必须归结为一些laravel/php进程,我没有直接参与其中。
所讨论的字段确实是其他地方的字段名,并且值不匹配。我觉得这是根源,但不知道如何或在哪里看。
编辑:
我让模型将primaryKey设置为officeID,即varchar。在laravel中,primaryKey应该是一个整数,这让我忘记了。所以原始数据很好,但是当在输出中返回值时,模型将非整数值变为0
最佳答案
因为你的模型和你的表之间有冲突
在您的模型中,您将0
设置为主键,但在表中它是一个varchar列。模型期望primaryKey列是一个整数。
这就给了你错误。所以你也应该
删除propoffice模型上受保护的$primaryKey='officeID'行
如果需要将该字段作为主键,请将其设置为整数。
找出如何将主键设置为varchar。(坏习惯)。