2017-08-29 140 views
0

ORM通用新手,寻找指导。Laravel雄辩的ORM替代

我有3个表格,我试图从属于我的调查表(从我的调查控制器内)的问题表中获取ID的列表。我可以使用ORM和采摘,但只返回第一个ID。任何想法如何我会去得到所有的问题ID对应于下面的查询?

当我在视图页面上显示页面时,它只会显示第一个ID一遍又一遍。有任何想法吗?

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

这是用来喂

$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); 
    } 


} 

回答控制器

<?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); 
    } 

} 

问题控制器

<?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

喜,有你'$ survey'的记录很多问题? – Maraboc

+0

该错误似乎与我的采摘逻辑。它在我的图表数据库查询中只返回ID的第一个实例。 – MTL

+0

是的,这就是我所说的,可能与您一起工作的“调查”在数据库中只有一个问题! – Maraboc

回答

0

由于我不完全确定问题,代码不完整,所以有一些想法。

  • $balls = $survey->questions()->pluck('id');将从DB创建集合 。当处理ID的集合/数组时,使用->whereIn('question_id', $balls)->get()
  • 您可以添加一个belongsTo(Question::class)Answer允许在你的数据库$answer->question