簡體   English   中英

Laravel 使用 factory->create() 修補程序時出錯,但在 artisan 中運行遷移/種子命令時不會出錯

[英]Laravel Errors in tinker using factory->create() but not when running migration/seed commands in artisan

我能夠使用php artisan migrate:fresh --seed從命令行成功運行遷移/工廠/播種機

但是,當我嘗試使用 tinker 手動創建類別時,出現錯誤:

<warning>PHP Warning:  Array to string conversion in /Users/[my_name]/Sites/blog/vendor/laravel/framework/src/Illuminate/Support/Str.php on line 99</warning>
TypeError: Illuminate\Database\Grammar::parameterize(): Argument #1 ($values) must be of type array, string given, called in /Users/[my_name]/Sites/blog/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php on line 886

<warning>PHP Warning:  Array to string conversion in /Users/[my_name]/Sites/blog/vendor/laravel/framework/src/Illuminate/Support/Str.php on line 99</warning>
=> App\Models\Category {#4529
     name: [
       "quaerat",
       "voluptatem",
     ],
     slug: "array",
   }

工廠代碼:

<?php

namespace Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

class CategoryFactory extends Factory
{
    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        $name = $this->faker->words(2,true);
        $slug = Str::of($name)->slug('-');

        return [
            'name' => ucwords($name),
            'slug' => $slug
        ];
    }
}

我有兩個問題:

  1. 為什么這兩種方法(make 和 create)會導致不同但相關的錯誤?
  2. 當正常的遷移/種子過程正常工作時,為什么修補程序會被絆倒?

謝謝,麻煩您了。

我仍然不知道為什么這兩個錯誤不同,但它很迂腐。

謝謝@Rwd。 我現在知道在 Laravel 中更改應用程序代碼后需要重新啟動 tinker。

在我想出將第二個參數添加到$this->faker->words()之前,字符串到數組的錯誤來自之前版本的代碼——這就是它與php artisan migrate:fresh --seed和與在php artisan tinker \App\Models\Category::factory()->create();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM