Красноречивый Отношение работает с одной стороны - PullRequest
0 голосов
/ 11 мая 2018

У меня есть две модели MediaProfile и MediaProfilesContent.MediaProfile имеет много MediaProfilesContent, а MediaProfilesContent принадлежит MediaProfile.Моя проблема в том, что мои отношения работают с одной стороны.Если я использовал MediaProfilesContent :: all (), чем я могу получить доступ к данным из MediaProfile, но если я запрашиваю из MediaProfile, то это дает мне эту ошибку «Свойство [cover] не существует в этом экземпляре коллекции».это означает, что отношения не работают.Ниже моя модель MediaProfile.

namespace App;

use Illuminate\Database\Eloquent\Model;

class MediaProfile extends Model
{    
public function mediaProfilesContent() {
    return $this->hasMany(MediaProfilesContent::class);
 }
}

MediaProfilesContent Модель:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class MediaProfilesContent extends Model
{   
public function mediaProfile() {
    return $this->belongsTo(MediaProfile::class);
 }
}

Также я добавляю приведенный ниже код в метод моего контроллера, чтобы проверить, возвращает ли он мне данные из таблицы mediaProfilesContent или нет.

$magazines = MediaProfile::where('category', 'Magazines')->get();
dd($magazines[0]->mediaProfilesContent());
return view('magazines', ['magazines' => $magazines]);

Вышекод только дает мне данные из таблицы MediaProfile, а не из второй таблицы.Мне нужна помощь, я застрял в этой ошибке с прошлой недели.

1 Ответ

0 голосов
/ 03 июня 2018

Если вы пытаетесь получить данные об отношениях, используйте lavarel с ().Вы можете найти это в документах.Обратитесь к документации для более подробной информации.

Примером может быть:

$ magazines = MediaProfile :: with ('mediaProfilesContent') -> где ('category', 'Magazines') -> get ();

Это пример.Вы можете редактировать как угодно.Также имейте в виду, что если вы не следуете соглашению eloquent, вам, возможно, придется внести изменения в вашу модель.Вы можете установить foriegn key, localkey в модели в 'return $ this-> ownTo (MediaProfile :: class);'вот так:

вернуть $ this-> ownTo (MediaProfile :: class, 'localkey', 'foreignkey,);

Надеюсь, это поможет:)

https://laravel.com/docs/5.6/eloquent-relationships

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