2017-08-29 28 views
0

一般的なORMの新機能で、ガイダンスを探しています。Laravel Eloquent ORM to pluck

私は3つのテーブルを持っていますが、自分のアンケートテーブルに属する質問テーブルからIDのリストを取得しようとしています。 ORMとpluckを使用できますが、最初のIDだけが返されます。下のクエリに対応するすべての質問IDを取得するにはどうすればよいですか?

ビューページでフォアグラウンドでページを表示すると、最初のIDが何度も表示されます。何か案は?回答コントローラ

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class answer extends Model 
{ 
    protected $fillable = [ 
     'answer' 
    ]; 

    protected $table = 'answers'; 

    public function survey(){ 
     return $this->belongsTo(Survey::class); 
    } 

    public function question(){ 
     return $this->belongsTo(Question::class); 
    } 

} 

質問コントローラー

$chart = Charts::database($answer->whereIn('question_id', $ball)->get(), 'bar', 'material') 
    ->title("") 
    ->colors(['#F5A623', '#A9D8D3']) 
    ->elementLabel("Answers") 
    ->dimensions(0, 250) 
    ->groupBy('answer'); 

調査コントローラー

class Survey extends Model 
{ 
    protected $fillable = ['title', 'description', 'user_id']; 
    protected $dates = ['deleted_at']; 
    protected $table = 'surveys'; 

    public function questions(){ 
     return $this->hasMany(Question::class); 
    } 

    public function user(){ 
     return $this->belongsTo(User::class); 
    } 

    public function answers(){ 
     return $this->hasMany(Answer::class); 
    } 


} 

を供給するために使用される

$ball = $survey->questions->pluck('id'); 
<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Question extends Model 
{ 
    protected $casts = [ 
    'option_name' => 'array', 
    ]; 

    protected $fillable =['title', 'question_type', 'option_name', 'user_id']; 
    public function survey(){ 
     return $this->belongsTo(Survey::class); 
    } 

    public function user(){ 
     return $this->belongsTo(User::class); 
    } 

    public function answers(){ 
     return $this->hasMany(Answer::class); 
    } 

    protected $table = 'questions'; 
} 
+0

ハイテクを可能にし、あなたのAnswerbelongsTo(Question::class)を追加することができ、あなたは '$のsurvey'の記録のために多くの質問を持っています? – Maraboc

+0

このエラーは、プルーキングロジックには含まれていません。それは、IDの最初のインスタンスを返すだけの私のグラフのデータベースクエリです。 – MTL

+0

はい、それは私が言ったことです、あなたが扱っている 'survey'がデータベースにたった1つの質問しか持っていないかもしれません! – Maraboc

答えて

0

私は完全には問題ではないとコードは不完全ですここでいくつかのアイデアです。

  • $balls = $survey->questions()->pluck('id');は、DBからコレクション を作成します。
  • IDのコレクション/配列を扱う場合は->whereIn('question_id', $balls)->get()を使用してください。
  • あなたは、データベース内の$answer->question