gpt4 book ai didi

php - laravel 在本地机器上返回 json 字符串,但在弹性 beantalk 实例上返回整数

转载 作者:可可西里 更新时间:2023-11-01 07:52:35 25 4
gpt4 key购买 nike

我在使用 aws、mysql、laravel 和 angular 时遇到了一个奇怪的问题。

我有一个在本地运行的 vagrant 实例,我的应用程序和数据库都在它上面运行。

我在前端使用 Angular,因此当加载 View 时,Angular 会请求接收用户输入的所有“目标”列表。 goals 中的字段之一是 goalStatus。这是 0 或 1 作为整数存储在 mysql 表中。

angular 检查此值是 0 还是 1,并根据结果显示不同的表格单元格

<th ng-if="goal.goalStatus === '0'"><p class="text-danger">In Progress</p></th>
<th ng-if="goal.goalStatus === '1'"><p class="text-success">Achieved</p></th>

在 chrome 开发工具中,当我查看此请求的响应结果时,我看到 goalStatus 是这样返回的

"goalStatus":"0"

并且 Angular if 语句按预期工作。

然而,当我将此应用程序推送到弹性 beanstalk 中的开发环境时,该开发环境连接到具有相同迁移和播种的 mysql rds 实例,开发工具显示 goalStatus 如下

"goalStatus":0

如果不满足条件,则 Angular 不显示,因此不会显示任何一个元素

所以看起来在弹性 beantalk 实例上它作为整数返回,但在本地机器上它作为字符串返回。我不知道问题会出现在 mysql、laravel 还是其他地方。

有什么想法吗?为了以防万一,我在下表中包含了 laravel 迁移和种子类

迁移

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;

class CreateGoalsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('goals', function(Blueprint $table) {
$table->increments('id');
$table->integer('userId');
$table->string('title');
$table->string('goalDesc');
$table->integer('goalStatus')->nullable();
$table->integer('bodyGoalId')->nullable();
$table->integer('strengthGoalId')->nullable();
$table->integer('distanceGoalId')->nullable();
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('goals');
}

}

播种机

<?php

class GoalsTableSeeder extends Seeder
{
public function run()
{
// Uncomment the below to wipe the table clean before populating
DB::table('goals')->truncate();

$now = date('Y-m-d H:i:s');

$goals = array(array(
'userId' => 1,
'title' => 'first goal title',
'goalDesc' => 'This should describe my goal in text form',
'goalStatus' => 0,
'bodyGoalId' => null,
'strengthGoalId' => null,
'distanceGoalId' => 1,
'created_at' => $now,
'updated_at' => $now),
array(
'userId' => 1,
'title' => 'strength goal title',
'goalDesc' => 'This should describe my strngth goal in text form',
'goalStatus' => 0,
'bodyGoalId' => null,
'strengthGoalId' => 1,
'distanceGoalId' => null,
'created_at' => $now,
'updated_at' => $now),
array(
'userId' => 1,
'title' => 'body goal title',
'goalDesc' => 'This should describe my body goal in text form',
'goalStatus' => 0,
'bodyGoalId' => 1,
'strengthGoalId' => null,
'distanceGoalId' => null,
'created_at' => $now,
'updated_at' => $now)
);

// Uncomment the below to run the seeder
DB::table('goals')->insert($goals);
}

}

最佳答案

所以这似乎是 php mysql 驱动程序将所有字段作为字符串返回而不管类型的问题。 source

我的 aws elastic beanstalk 实例似乎设置为解决这个问题,因此它返回字符串和字符串以及整数作为整数,而我的流浪者设置需要更改为使用 php5_mysqlnd 驱动程序而不是它拥有的驱动程序,这解决了问题

关于php - laravel 在本地机器上返回 json 字符串,但在弹性 beantalk 实例上返回整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21961870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com