php - Laravel ORM 数组到字符串的转换

标签 php laravel orm eloquent

Laravel 5.3、PHP 5.6 全新的 laravel new 项目,最小配置。

我做了一个简单的迁移和模型,并尝试通过 php artisan tinker 将数据播种到其中。

我的迁移看起来像这样:

<?php

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

class CreatesFooTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('foo', function (Blueprint $table) {
            $table->increments('id');
            $table->string('foo', 20);
            $table->timestamps();
        });
    }

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

当我运行 php artisan migrate 时,数据库填充得很好。

对应的模型很简单:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Foo extends Model
{
    protected $table = 'foo';

    protected $fillable = ['foo'];

}

我也有一个 ModelFactory:

$factory->define(App\Foo::class, function (Faker\Generator $faker) {

    return [
        'foo' => $faker->email,
    ];
});

当我尝试制作来自工厂的传单时,Tinker 做了我认为应该做的事:

>>> factory('App\Foo')->make();
=> App\Foo {#696
     foo: "morgan39@gmail.com",

但是当我尝试访问数据库时,Eloquent 无法将查询值包装在一个字符串中:

>>> $foo = factory('App\Foo')->create();
Illuminate\Database\QueryException with message 'SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'foo' at row 1 (SQL: insert into `foo` (`foo`, `updated_at`, `created_at`) values (jakayla62@streich.org, 2016-09-06 23:59:03, 2016-09-06 23:59:03))'

Google 上没有这样的东西。有什么想法吗?

(经过编辑以通过更简单的示例显示相同的问题)

最佳答案

一些 faker 方法默认将结果作为数组返回。例如:

$faker->words(3)

会返回:

array('porro', 'sed', 'magni')

要以字符串形式返回结果,您可以将 true 作为某些方法的第二个参数传递,如上例中使用 words 方法:

$faker->words(3, true)

返回:

"porro sed magni"

readme 中所述:

words($nb = 3, $asText = false)    // array('porro', 'sed', 'magni')

关于php - Laravel ORM 数组到字符串的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39359130/

相关文章:

php - Laravel 电子邮件验证 - 强制登录

java - JPA MappedSuperClass继承策略

python - Django ORM - 没有级联删除多对多关系

php - 不明白 serialize()

php - CodeIgniter 中的 SQL 查询

javascript - 使用本地存储保存和加载输入值?

php - 在 Lumen 5.2 中配置日志轮换

PHP/MySQL 插入行然后得到 'id'

email - Laravel:如何将图像作为内容而非附件嵌入电子邮件中

javascript - 在单独的文件中使用 Sequelize 创建模型并在您的项目中使用它们