如何从laravel关系中检索数据?

问题描述 投票:0回答:1

你好,我试图与laravel一起做一个测验应用程序,而我却在努力检索类别的问题。.>

我对此有一个难看的解决方案,但它不是动态的。

public function startQuiz(Request $request){
  $questions = Question::all();

  foreach ($questions as $key => $question) {
    dd($question->where('categories_id', 'LIKE', 2)->get()); // i want to change the 2 to the real category id 
  }
}

我以为我可以通过$ question-> category-> id之类的关系来做到这一点,但不会起作用。

那是我的模特:

class Question extends Model
{
    protected $fillable = ['question_text', 'categories_id', 'correct_answer', 'options'];
    protected $casts = ['options' => 'array'];

    public function category(){
      return $this->belongsTo(Category::class, 'categories_id');
    }
}

class Category extends Model
{
    protected $fillable = ['name', 'slug'];

    public function question()
    {
        return $this->hasMany(Question::class, 'questions_id');
    }

我无法以某种方式传递ID并检查它,我不知道为什么..那是我通过类别的表格:

@section('content-categories')
<div class="card">
  <div class="card-header">Choose Category to Start</div>
  <div class="card-body">
    @foreach($categories as $category)
      <form class="form-group" action="{{route('user.quiz', $category->slug)}}" method="post">
        @csrf
        <input type="submit" name="categoryTest" class="form-control" value="{{$category->name}}">
      </form>
    @endforeach
  </div>
</div>
@endsection

编辑:我想我知道为什么我无法与我的关系检索数据。.我在类别类中的关系有错误,我没有questions_id的字段,我将其替换为:

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

现在我可以通过以下方式获得问题:

public function startQuiz(Request $request){
      $questions = Question::all();
      $questionsCategory = [];
      if($request){
        foreach ($questions as $question) {
          if ($request->categoryTest == $question->category->name) {
            $questionsCategory = $question->where('categories_id', '=', $question->category->id)
                                          ->get();
            var_dump($questionsCategory);
          }
        }
      }
    }

你好,我试图用laravel来做一个测验应用程序,而我正努力地用类别来检索我的问题。我对此有一个难看的解决方案,但它不是动态的。.public function ...

php laravel eloquent relationship laravel-blade
1个回答
0
投票
尝试用'LIKE'替换'='。然后删除dd(...),例如:
© www.soinside.com 2019 - 2024. All rights reserved.