0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

laravel モデルクラスを使ってfindしようとしたらエラーが出た

Posted at

概要

  • モデルクラスを用いてfindしたらエラーが発生したので解決方法をまとめる。

エラー発生までの経緯

  • 下記のような記載をコントローラーの関数内に記載した。

    FooController.php
    use App\Models\Content;
    
    $contentEloquent = Content::find($request->contentId);
    
  • 当該のモデルクラスは下記のように記載した。

    app/Models/Content.php
    <?php
    
    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Database\Eloquent\Model;
    use Illuminate\Database\Eloquent\SoftDeletes;
    
    class Content extends Model
    {
        use HasFactory;
        use SoftDeletes;
    
        protected $fillable = [
            'id',
            'content',
        ];
    }
    
  • 当該のマイグレーションは下記のように記載した。

    create_contents_table.php
    <?php
    
    use Illuminate\Database\Migrations\Migration;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Support\Facades\Schema;
    
    return new class extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('contents', function (Blueprint $table) {
                $table->id();
                $table->string('content', 255)->comment('投稿内容');
                $table->timestamps();
            });
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::dropIfExists('contents');
        }
    };
    

エラー

  • findの処理が実行される部分に差し掛かった時、下記のエラーが発生した。

    Illuminate\Database\QueryException with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'contents.deleted_at' in 'where clause' (SQL: select * from `contents` where `contents`.`id` = 7 and `contents`.`deleted_at` is null limit 1)'
    

エラー解消までの経緯

  • マイグレーションに論理削除系カラムの作成命令を記載していなかった。。(モデルクラスには記載していたのに。。)

  • 下記のようにマイグレーションを修正したところエラーは解消した。

    create_contents_table.php
    <?php
    
    use Illuminate\Database\Migrations\Migration;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Support\Facades\Schema;
    
    return new class extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('contents', function (Blueprint $table) {
                $table->id();
                $table->string('content', 255)->comment('投稿内容');
                $table->timestamps();
                $table->softDeletes();
            });
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::dropIfExists('contents');
        }
    };
    
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?