как показать данные из двух связанных таблиц с помощью Laravel - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть две таблицы, одна из которых называется " Events ", а другая - " Dependences ", зависимость может иметь несколько событий, то есть связь между ними, что я пытаюсь сделать это показать данные события, но также показать данные зависимости, к которой относится.

Это мой контроллер, куда я переношу событие:

class WelcomeController extends Controller
{
    public function evento($slug){
    $event = Event::where('slug', $slug)->first();
    return view('evento', compact('event'));
}

Это модель события:

class Event extends Model
{
    protected $table = 'events';

    protected $fillable = [
        'admin_id', 'dependence_id', 'place_id', 'name', 'slug', 'excerpt', 'body', 'status', 'file'
    ];

    public function dependences(){
        return $this->belongsTo('App\Dependence', 'dependence_id');
    }

модель зависимости:

class Dependence extends Model
{
    protected $table = "dependences";

    protected $fillable = [
        'name', 'slug'
    ];

    public function events(){
        return $this->hasMany('App\Event');
    }

поэтому я пытаюсь показать это в виде:

@foreach($event->dependences as $dependence)
                <a href="#">
                {{$dependence->name}}
                </a>
                @endforeach

но я получаю эту ошибку: Попытка получить свойство 'name' необъекта

это таблицы в базе данных:

введите описание изображения здесь

маршруты в порядке, но я не знаю, в чем проблема, надеюсь на вашу помощь, большое спасибо.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Существует только одна зависимость для каждого события. Так что вам не нужно использовать foreach.

$events->dependency->name

И вам следует изменить имя отношения с dependences на dependency.

class Event extends Model
{
    public function dependency()
    {
        return $this->belongsTo('App\Dependence', 'dependence_id');
    }
}

В поле зрения:

@foreach($events as $event)
   <a href="#"> {{ $event->dependency->name }} </a>
@endforeach
0 голосов
/ 16 сентября 2018

Вы должны получить доступ напрямую, как:

$event->dependence->name;

С тех пор, belongsTo отношение приносит один предмет.

Также добавьте проверку, чтобы видеть, является ли объект нулем, как в:

@if($event->dependece)
    $event->dependence->name;
@endif

Вы также можете использовать @else, если хотите каким-либо образом управлять нулевым регистром

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