2017-06-29 23 views
1

職人を使用してSQLスクリプトを実行しているデータベースのレコードを更新したいとします。たとえば、次のようなコマンドを実行する必要があります。Laravel更新データベースレコード実行スクリプト

UPDATE translations SET field = 'meta_desc' WHERE field = 'page_desc' 

Laravelの構造が最適な解決策は何ですか?種子、移動、工場?

+1

使用中のコンソールコマンド:コン​​ソールでの最後のコマンドを実行した後、私はクラスUpdateTranslationsSeederに関するエラーを持っている場合は、未定義の実行は、新しいクラスについてLaravelを伝えるために、コンソールで次のコマンドです。 docs https://laravel.com/docs/5.4/artisan#writing-commands –

+0

を参照してください。私のDBの変更をプロダクションサーバのDBにデプロイするためにこのスクリプトを実行する必要があります。毎回新しいartisanコマンドを書くよう提案しますか?私はプロダクションで何かを変えたいですか?申し訳ありませんが、それは私のための悪い解決策です... –

+0

その内容が動的で、異なるSQLクエリを実行するコマンドを作成したいと思いますか? –

答えて

0

皆様お返事ありがとうございます。 @RossWilsonに感謝して、DBのデータを変更するために移行を使用することを考えました。

Laravelのコンセプトには、DB構造の変更に移行を使用することが含まれるため、これは良い解決策ではないと思います。

Laravelのマニュアルを読んだところ、私はdbのデータを操作するための特別なコード構造があることを発見しました。それはSeedです。

php artisan make:seed UpdateTranslationsSeeder 
  • はrun()メソッド内のコードを書く:職人のコマンドを使用して、新しい種を作成し

    1. :だから、私は上記の私の例のクエリに対して次のシードを使用して、私の問題を解決し

      DB::table('translations')->where('field', 'page_desc')->update(['field' => 'meta_desc']); 
      
    2. 職人で私のシーダを実行します。

      php artisan db:seed --class=UpdateTranslationsSeeder 
      

    注:

    composer dump-autoload -o 
    
  • 関連する問題