問題タブ [laravel-seeding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3509 参照

php - データベースのシード - [ErrorException] 非オブジェクトのプロパティを取得しようとしています

"zizaco/confide": "~4.0@dev""zizaco/entrust": "1.2.*@dev"を使用しています。

2 つのチュートリアル (confide migrations) で説明されているように、すべてをセットアップしました。さらに、次のモデルを作成しました。

ユーザー:

役割:

許可:

さらに、最初にデータベースに値をシードしたいので、ユーザー、ロール、および権限用にいくつかのシーダーを作成しました。ただし、許可シーダーでエラーが発生します。

UserTableSeeder:

RolesTableSeeder:

PermissionsTableSeeder:

これは、実行時に表示されるエラーですdb:seed

シーディングで間違っていることについての推奨事項はありますか?

あなたの答えに感謝します!

0 投票する
0 に答える
224 参照

mysql - 大規模な MySQL データセットで Laravel を使用して本番環境の不良データを再シードするコストのかかるプロセス

大規模なシードされたデータベースでエラーを修正するより健全な方法を探しています。解決策は大歓迎です。正気であれば問題ありません (ジョブのツール、つまりリレーショナル データベースについて質問してください)。データを切り捨ててすべての値を再シードする余裕はありません。特にデータの整合性が重要になる場合。これは、エラーを説明するために再シード全体を実行する必要なく、開発者のエラーに対して十分に堅牢である必要があります。移行/MySQL/リレーショナル DB は、シードされたデータセットに対して十分な柔軟性を持っていないようです。私の知識が欠けているところです。

シナリオ:

  • 移行クラスでシード (JSON) を使用する Laravel プロジェクトについては、[Laravel : Migrations & Seeding for production data][1] を参照してください。

    [1]: Laravel : 本番データの移行とシード

    • 名前、体重、身長、チーム、生年月日などの 10 個の値を含む、フットボール選手を表す MySQL データベース 10k JSON オブジェクト。オブジェクトは繰り返し処理され、AI ID を使用して DB に挿入されます。

問題: MySQL の「高さ」列は、開発者のエラーにより、元々 int 型で float 型ではなかったため、すべての高さが 2m に丸められました。

移行により、タイプをフロートに変更しましたが、すべての高さの値は、まだすべて 2m (たとえば、1.76 ではない) であるため、再シードによって変更する必要があります。JSON からのオブジェクトには MySQL 挿入で一意の ID が割り当てられるため、データの整合性を維持しながら列の値を変更するには、何千もの JSON オブジェクトを MySQL に再シードする必要があり、時間とコストについて考える必要があります。

明確にするために、シード元の ID のない JSON オブジェクトがあります。それぞれのサッカー リーグ用にいくつかの JSON ファイルがあるので、これらをモジュラー方式でシードします。つまり、新しいプレーヤーを挿入するときです。変更を加える必要がある場合、JSON 内のオブジェクトとデータベース内のオブジェクトの間に整合性がありません。複合キーを作成するために必要な値を操作することを考えましたが (?)、それでもデータが非常に壊れやすく、開発者のエラーが発生しやすいように感じます、これを適切に管理する方法が必要です。特に、タイムスタンプ値に基づいて移行を実行することによってのみ制限されているため、Laravel の移行/シードが提供するとは思わない (実行した特定の移行ファイルをロールバックするように指定することはできません)ついさっき)。データベースの「ソース管理」が存在する場合は、おそらく良い考えです。投稿にはdatabase-theoryおよびdata-integrityというタグが付けられていることに注意してください。再シードできることはわかっていますが、これには数時間かかる場合があります。

乾杯。

0 投票する
2 に答える
3426 参照

php - Laravel 5 シード

ドキュメントに従ってユーザーテーブルをシードしています。これは、 User::create が使用されていることを示しています

しかし、それは言い続けます:

ユーザー用のartisanを使用してmake:modelを作成する必要があるのではないかと思いましたが、既に存在しています。誰かが私を正しい方向に向けることができますか?私はLaravelを使い始めたばかりで、Laracastとドキュメントを通じてそれをつなぎ合わせていますが、5.0のシードに関するLaracastはありません. artisan が generate:seed を認識しないため、現在シードを生成できないようです。

0 投票する
2 に答える
2127 参照

php - Laravel 5 データベースのシード処理における名前付けの競合

データベース シードを (他のコンソール コマンドと一緒に) 実行すると、名前の競合が発生します。

私のモデルはすべてapp/Modelsディレクトリに保存され、App\Models名前空間にあります。このディレクトリModel.phpには、laravel 基本モデルを拡張するという基本モデルがあります。

私のモデルのいくつかは、この基本クラスを拡張します。たとえば、

私のモデルのいくつかは雄弁なモデルを直接拡張しています。

私のアプリケーションが http 経由でアクセスされる場合、これは正常に機能し、名前の競合はありません。ただし、 などのコンソール コマンドを実行しようとするとdb:seed、次のエラーが表示されます。

私の最初の推測では、laravel が何らかの形でシード ファイルをコンパイルし、それが競合を引き起こしていると考えています。誰かアイデアを持っていますか、それとも他の誰かがすでにこの問題に遭遇していますか?

0 投票する
0 に答える
1067 参照

php - laravelでのシード中の関数への非同期ガズル呼び出し

API からジオコードをフェッチし、アドレス エントリに対してデータベースを更新しようとしています。これをlaravelのシードクラスで実行しています。

また、Guzzle を使用して非同期呼び出しを行っています。API呼び出しを非同期で実行したいと同時に、バックグラウンドで非同期応答を読み取り、データベースで更新したいと考えています。

// ここでエコーして出力しようとしましたが、スクリプトがこのコールバック関数に入っていないようです });

上記のコード行をループで呼び出しています。上記のスクリプトは、同期呼び出しを行うと問題なく実行されますが、非同期呼び出しでは実行できませんか? それを手伝ってくれませんか。

スクリプトがコールバック関数に入っていないようです

0 投票する
3 に答える
8715 参照

php - Laravel:「php artisan db:seed」が動かない

データベースで「ServiceTableSeeder」テーブルを実行しようとしましたが、エラー メッセージが表示されました。

php artisan db:seed" "を実行してみます

メッセージ:

データベースシーダー .php

ServiceTableSeeder.php

この問題を修正する方法.私はlaravelの初心者で、誰でも私を案内してください.

0 投票する
1 に答える
937 参照

git - Laravel 5でシーダーファイルをgitignoreする必要がありますか?

移行ファイルとシーダー ファイルを偽のデータでセットアップしましたが、うまく機能しています。作業をコミットしようとしていますが、シーダー ファイルをどうすればよいかよくわかりません。本番環境でシーダー ファイルを実行したくないので、無視することにしました。誤って偽のデータを本番環境に移行してシードしたくありません!

それでも、シーダーは実際のデータを使用して本番環境で使用できると考えています。他のテーブル列で何らかの計算を実行する必要がある新しい列を追加するとします (例のために、他のフィールドから計算できるフィールドはデータベースに存在しないことを無視します) 値を格納します。または新しい設定/フラグ。そのフィールドに既存の本番データを入力するシーダーを作成できると思います。だから今、シーダーディレクトリを無視することはできません.

すべてのケースで各ファイルを個別に無視することを決定する必要がありますか? devシーダーが環境でのみ実行されるべきであることをどこかで宣言できますか? ここでのコンベンションは何ですか?