Laravel 5-收集在远程服务器上是空的(整数/字符串错误Apache)



当我在本地服务器上的laravel 5.2中使用laravel 5.2的位置时,我必须使用整数值来过滤值,但是当我在远程服务器上部署时,我必须在功能上使用字符串值。这样:

$indicators = Indicator::get();
$main_indicators = $indicators->where('main',1)->all(); 
//$main_indicators works on local empty on remote  
$indicators = Indicator::get();
$main_indicators = $indicators->where('main','1')->all(); 
//$main_indicators works on remote empty on local

这种情况仅在过滤由雄辩查询创建的集合时才发生。当我在雄辩的查询中使用时,它在每个服务器上都这样工作:

Indicator::where('main',true)->get(); 

Main是布尔(Mariadb上的Tinyint(1))。

迁移:

$table->boolean('main')->default(false);

本地服务器:MACOSX,XAMMP,PHP 7

远程服务器:php 7,apache

我想要每个服务器上的相同代码,我想更改远程服务器,但是我不知道要设置什么。它真的很烦人开发两个版本...

数据库在两个服务器上都是相同的。

Web服务器是Apache。谢谢

主要问题是mysql驱动程序:php pdo mysql:如何从mysql中返回整数和数字列,为整数和php中的数字?

但是,可以通过将铸件设置为模型来真正可以很容易地解决:

//Indicator model
protected $casts = [
    'main' => 'boolean'
];

好吧,您无法正确使用where查询。需要指定 prier get或全部。

您应该看起来像这样(基于您当前的代码):

$indicators = new Indicator; // Indicator::all() also works.
$main_indicators = $indicators->where('main',1)->get();

但这很难看。而是将Indicator类注入您的控制器构造或方法本身。我将使用下面的控制器注入方法示例:

public function someFunction(Indicator $indictors) {
    $main_indicators = $indicators->where('main', true)->get();
}

或只是做:

$main_indicators = Indicator::where('main', true)->get();

第二个示例应该是您的首选;)

最新更新