Здравствуйте, я пытаюсь сделать приложение-викторину с 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);
}
}
}
}