App \ Post :: categoryorys должен возвращать экземпляр отношения, но было возвращено «null». Было ли использовано ключевое слово "return"? Laravel - PullRequest
1 голос
/ 31 марта 2020

Я не понимаю, почему это не работает, был на этом в течение нескольких дней. Я делаю веб-сайт, который показывает продукты, и у каждого продукта есть категория, поэтому я установил связь с таблицей записей и категорий, но он продолжает выдавать эту ошибку. App \ Post ::ategorys должен возвращать экземпляр отношения, но возвращается значение «ноль». Было ли использовано ключевое слово "return"?

Post.php: (this is the modal section for Post)

public function categorys(){
$this->hasOne(Category::class);
}

Category.php: (this is the modal section for Category)

public function posts(){
$this->hasMany(Post::class);
}

index.blade.php: (index section to display the name of the categories)

{{  $posts->categorys->name }}


***SOLVED*** added return! But now its giving me another problem 
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'categories.post_id' in 'where clause' (SQL: select * from categories where categories.post_id = 1 and categories.post_id is not null limit 1) sorry I am new in Laravel 



 public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
            $table->string('name');
            $table->text('description');
            $table->integer('category_id');
            $table->integer('price');
        });
    }



  public function up()
    {
        Schema::create('categories', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
            $table->string('name');
     });
    }
It keeps giving the error i dont know what seems to be the problem

Ответы [ 2 ]

1 голос
/ 31 марта 2020

вам нужно вернуть отношения. Как

public function categorys(){
$this->hasOne(Category::class);
}

Должно стать

public function categorys(){
return $this->hasOne(Category::class);
}
0 голосов
/ 31 марта 2020

Вам необходимо указать внешний ключ в вашей миграции для категорий. Вы делаете это так:

 public function up()
    {
        Schema::create('categories', function (Blueprint $table) {
            $table->id();
            $table->unsignedInteger('post_id');
            $table->foreign('post_id')->references('id')->on('posts');
            $table->string('name');
            $table->timestamps();
     });
    }

Не забудьте перенести снова после удаления ваших таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...