tomgif
@tomgif
Веб-разработчик

Почему представление получает поле в json?

Есть модели: Вопросы и Блоки (категории вопросов). Один вопрос может находится только в 1 блоке. Блок может содержать множество вопросов

Question.php
class Question extends Model
{
    public function block() {
    	return $this->belongsTo('App\Block');
    }
}


Block.php
class Block extends Model
{
    public function questions() {
    	return $this->hasMany('App\Block');
    }
}


QuestionController.php
class QuestionController extends Controller
{

    public function index() {

		$questions = Question::all();

		return view('question.index')->with('questions', $questions);
    }
}


Теперь сама суть проблемы:
При попытке отобразить название блока вопроса получаю ошибку Trying to get property of non-object
<td>{{ $question->block->name }}</td>

Этот же блок кода возвращает json: {"id":1,"name":"\u0411\u043b\u043e\u043a 1"}
<td>{{ $question->block }}</td>
  • Вопрос задан
  • 140 просмотров
Решения вопроса 2
@Novikofff
PHP Developer
Попробуй
<td>{{ $question->block()->name }}</td>

Или же делай сначала жадную загрузку:
class QuestionController extends Controller
{

    public function index() {

    $questions = Question::all()->load('block');

    return view('question.index')->with('questions', $questions);
    }
}

а потом в шаблоне вызывай так как вызывал:
<td>{{ $question->block->name }}</td>
Ответ написан
tomgif
@tomgif Автор вопроса
Веб-разработчик
Проблема заключалась в том, что в базе хранились вопросы, не привязанные к блокам
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы