我的本地环境有个奇怪的问题。
如果我以json的身份返回Laravel,那么每个属性都返回为字符串,而不是数字或布尔值。
$j = Jobposition::find($id);
return $j;如果我使用PHP5.5,那么返回类型是正确的。
在我的服务器上,它可以在PHP7上正常工作,所以我认为这是我的本地php设置。
下面是我是如何编译PHP 7.0.4的:
./buildconf --force
env YACC=`brew --prefix bison27`/bin/bison ./configure --prefix="/usr/local/opt/phpng" --with-config-file-path="/usr/local/etc/phpng" --enable-bcmath --enable-calendar --enable-exif --enable-ftp --enable-gd-native-ttf --enable-gd-jis-conv --enable-mbstring --enable-pcntl --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --enable-zip --enable-json --with-bz2 --with-curl --with-iconv --with-freetype-dir=`brew --prefix freetype` --with-gd --with-gettext=`brew --prefix gettext` --with-gmp --with-jpeg-dir=`brew --prefix gd` --with-mcrypt=`brew --prefix mcrypt` --with-mysqli=`brew --prefix`/bin/mysql_config --with-openssl --with-pdo-mysql=`brew --prefix mariadb` --with-png-dir=`brew --prefix gd` --with-zlib=`brew --prefix zlib`
make -j`sysctl -n hw.logicalcpu_max`
env INSTALL_ROOT=$PWD/phpng-pkg make install
pkgbuild --root phpng-pkg --identifier net.php.phpng --version 7.0.4-dev --ownership recommended phpng-dev.pkg根据以下教程:http://www.justinsilver.com/technology/install-php-7-0-phpng-on-mac-os-x/
我的发现是:编码工作正常-使用json_encode看起来很好。
解决方法是在模型中使用$casts属性。但是为什么要定义它,如果它应该是开箱即用的(我想知道问题所在;-)
谢谢斯特凡
更新29.02.2016:我太蠢了,我没有先检查它。这个问题与JSON无关!模型已经被填充为false,并且是不正确的。
App\Job\Company\Jobposition {#994
id: "1",
title: "Maxime natus.",
salary: "3181",
contact: "Aglae.Shanahan@yahoo.com",
published: "1",
approved: "1",
}发布于 2016-02-26 18:28:42
我也想到(大约一年前),当我在工作场所切换到一个dev服务器时,我的模型类型没有得到充分的返回。
原因是我在本地VM上安装了mysqlnd (PHP包),这有助于PHP为结果集确定合适的变量类型。
没有这一点,将每个类型作为字符串返回是完全没有问题的。
我看到您的配置调用包括mysqli驱动程序定义。如果不定义它就足够了,因为它是5.4中的缺省值(至少文档是这么说的,http://php.net/manual/de/mysqlnd.install.php)
当然,如果我们谈论的是一个MySQL数据库,这当然是合适的。
https://stackoverflow.com/questions/35658972
复制相似问题