Laravel 5 возвращает JSON вместо объекта в отношении ownTo ()

Я установил Laravel Framework v5.3.2 и dimsav / aravel-переводимые пакет v6.0.1. У меня возникли проблемы с получением данных из отношения ownTo () (parent) в той же модели.

category.php модель

class Category extends Eloquent
{
public $translatedAttributes = [
'name', 'slug', 'description'
];

public function category()
{
return $this->belongsTo('App\Model\Category', 'category_id', 'id');
}

public function categories()
{
return $this->hasMany('App\Model\Category', 'category_id', 'id');
}
}

Способ получения списка всех категорий:

$categoryModel = new Category;
$categories = $categoryModel->with('category.translations')->get();

Когда я печатаю атрибут name в представлении, Laravel выдает исключение: «Попытка получить свойство необъекта».

<?php foreach ($categories as $category): ?>
Name: <?php echo $category->category->name; ?>
<?php endforeach; ?>

Но когда я пытаюсь получить значение как массив, он работает:

<?php foreach ($categories as $category): ?>
Name: <?php echo $category->category['name']; ?>
<?php endforeach; ?>

Еще одна вещь, когда я пытаюсь var_dump ($ category-> категория) внутри foreach я получаю это:

object(App\Model\Category)[221]...

Результаты дд ($ категории) с точки зрения внутри foreach:

Category {#231 ▼
#table: "category"+translatedAttributes: array:4 [▶]
+timestamps: false
#connection: null
#primaryKey: "id"#keyType: "int"#perPage: 15
+incrementing: true
#attributes: array:3 [▶]
#original: array:3 [▶]
#relations: array:2 [▼
"category" => Category {#220 ▶}
"translations" => Collection {#228 ▶}
]
#hidden: []
#visible: []
#appends: []
#fillable: []
#guarded: array:1 [▶]
#dates: []
#dateFormat: null
#casts: []
#touches: []
#observables: []
#with: []
+exists: true
+wasRecentlyCreated: false
}

Таким образом, объект существует, но Laravel не показывает его должным образом, когда я пытаюсь получить доступ к атрибуту напрямую. Кто-нибудь знает, где проблема? Это в Laravel или, может быть, в laravel-переводимой упаковке?

1

Решение

Этот код возвращает коллекцию объектов:

$categoryModel->with('category')->get();

Но вы пытаетесь использовать его как объект, и именно поэтому вы получаете ошибку.

Вам нужно перебрать коллекцию, чтобы использовать в ней объекты, поэтому попробуйте что-то вроде этого:

@foreach ($categories as $category)
{{ $category->category->name }}
@endforeach
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]