Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 04.08.2018 00:39:20

Почему в laravel может не работать hasMany связь?

Добрый день,

Есть 2 модели - Марки и Выпуски марок:

class Mark extends Model
{
    protected $table = 'marks';

    public function editions()
    {
        return $this->hasMany(Edition::class, 'mark_id');
    }
}

class Edition extends Model
{
    protected $table = 'editions';

    public function mark()
    {
        return $this->belongsTo(Mark::class);
    }
}

Проблема в вызове связи на живую модель данных (сами связочные данные в таблицах присутствуют),

class MarksController extends Controller
{
    public function show(Mark $mark)
    {
         dump($mark->name);
         dd($mark->editions());
    }
}

Хватаю:

Method Illuminate\Database\Query\Builder::editions does not exist.

Странно, например комментарии для статей по такому же принципу связи работают идеально.

Пробовал переименовывать метод связи - не помогло.

Например такая конструкция у меня работает:

Article::find(1)->comments()->create(['body'=>'haha','user_id'=>1])

Ааналогично:

Mark::find(1)->editions()->create(['name'=>AhAhAhA]);

Падает с аналогичной ошиибкой:
Method Illuminate\Database\Query\Builder::editions does not exist.

пробовал:

dd($mark->editions)

Ловлю null

Мне в итоге надо получить:

$editions = $mark->editions()->orderBy('sort')->get();

На что я ловлю вышеуказанную ошибку.

Склоняюсь - что проблема в модели:

namespace App\Entity\Vehicle;

use App\Entity\Behaviors\ImagePublicBehavior;
use Cviebrock\EloquentSluggable\Sluggable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Notifications\Notifiable;

class Mark extends Model
{
....

Т.к. добавил сущность комментов для Марок, та же ошибка для:

$mark->comments()->create(['body' => 'xxx', 'user_id' => 1]);
         dd($mark->comments());
Illuminate\Database\Query\Builder::comments does not exist.

В чем может быть проблема? Подскажите пожалуйста.

Изменено EVOSandru6 (04.08.2018 01:16:10)

Не в сети

Подвал раздела