前提・実現したいこと
skillsテーブル
.id
.name
.status
blog_skillsテーブル(中間テーブル)
.skill_id
.blog_id
blogsテーブル
.content
.id
モデル、マイグレーション
[Blog_php] public function blogSkills() { return $this->hasMany(BlogSkill::class, 'blog_id'); } [skill.php] public function blogSkills() { return $this->hasMany(BlogSkill::class, 'skill_id'); } [Blogマイグレーション ] public function up() { Schema::create('blogs', function(Blueprint $table) { $table->integer('id', true); $table->string('content', 200); $table->boolean('status'); $table->dateTime('published_at')->nullable(); $table->timestamps(); $table->softDeletes(); }); } [skillマイグレーション ] public function up() { Schema::create('skills', function(Blueprint $table) { $table->integer('id', true); $table->string('skill_name', 50)->unique('skill_name'); $table->boolean('status'); $table->timestamps(); $table->softDeletes(); }); }
内容
現在、Eloquentを利用してskillsテーブルのstatusが1のものだけを取得したいと考えています。
しかし下記のソースコードでは、対応するskills_idが複数あり、一つでもstatusが1であれば、その他のstatusが0だとしても弾かれることはなく取得してしまいます。
複数skill_idを持っていたとしても、statusが1のものだけを取得したいです。
リレーションを使いたいので、Eloquentで実装したいと考えます。
ご教授お願いいたします。
該当のソースコード
Laravel
1Blog::whereHas('blogSkills', function($query){ 2 $query->whereHas('skill', function($query2){ 3 $query2->where('status', '=', 1); 4 }); 5 })
回答1件
あなたの回答
tips
プレビュー