Я не могу понять, что не так с этим кодом. Я бегу Laravel 5.4.
Ошибка: https: // www. dropbox.com/s/64ioxdf4mv6ps1w/Screenshot%202017-02-28%2020.11.33.png?dl=0
Функция контроллера:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Thread;
class ThreadController extends Controller
{
public function show($id) {
return Thread::where('id', '=', $id)->messages();
}
}
Модель:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Thread extends Model
{
public function messages()
{
return $this->hasMany(Message::class)->get();
}
}
2 ответа
Я предлагаю добавить ваш код ошибки вместо ссылки на изображение (сейчас AWS не работает, поэтому я не могу просмотреть изображение).
Несмотря на это, метод messages
определяет отношение и, как таковой, является экземпляром построителя запросов. Вместо того чтобы связывать метод get
там, я предлагаю немного другой подход:
В вашем контроллере
public function show($id)
{
// Use first() instead of get() since you're returning a
// specific model by its primary key (I assume)
return Thread::where('id', $id)->with('messages')->first();
}
И в твоей модели
public function messages()
{
// This returns a query builder instance, which is what you want.
// It defines the relationship between Thread and Message
return $this->hasMany(Message::class);
}
Это будет eager load
вашими сообщениями вместе с вашей Thread
моделью.
Надеюсь, это поможет!
Относительно вопроса Джоэла в комментариях ...
Пользователь :: находкой ( 1 ) - > messages- > создать ( $ request- > только ( ' тело '));
Не вызывает «функцию сообщений», которую вы упомянули, и не возвращает отношения. Вместо этого он вызывает свойство сообщений, что является чем-то другим.
Похожие вопросы
Новые вопросы
laravel-5
Laravel 5 — это версия Laravel, выпущенная в период с 2015 по 2020 год. Laravel — это MVC-фреймворк для веб-разработки на PHP с открытым исходным кодом, созданный Тейлором Отвеллом, который помогает создавать приложения с использованием простого выразительного синтаксиса. Используйте тег laravel для общих вопросов, связанных с Laravel.