Я не уверен, является ли это имя обратной связью или нет, но

У меня есть модель событий, которая содержит:

public function venue()
    {
        return $this->hasOne('App\Models\Venue', 'id','venue_id');
    }

Таким образом, в основном я могу получить доступ к данным о месте проведения с помощью модели событий, но также я хочу получить доступ ко всем данным о мероприятиях для конкретного места. Я знаю, что могу сделать это с помощью запросов и т. Д., Но возможно ли это с отношениями.

Перенос событий

        $table->id();
        $table->string('name');
        $table->string('slug')->unique();
        $table->unsignedBigInteger('venue_id');
        $table->decimal('price');
        $table->text('content');
        $table->timestamps();
        $table->foreign('venue_id')->references('id')->on('venues');

Перенос объекта

        $table->id();
        $table->string('name')->unique();
        $table->string('slug')->unique();
        $table->string('address');
        $table->text('about');
        $table->timestamps();

Модель событий

public function venue()
{
    return $this->hasOne('App\Models\Venue', 'id','venue_id');
}

Модель объекта

public function events()
{
   return $this->belongsTo(Event::class, 'venue_id','id');
}
0
ulas 13 Июн 2021 в 17:32

2 ответа

Лучший ответ

Да, это возможно. Вы можете использовать belongsTo

Место проведения

public function events() {    
return $this->hasOne(Event::class); 
}

< Сильный > Событие

public function venue()
{
   return $this->belongsTo(Venue::class);
}

Затем вы можете получить доступ, как показано ниже

$venue = Venue::with('events')->where('slug',$venue_slug)->get();

foreach($venue as $key=>$value){
 
dd($value->events);

}
0
John Lobo 13 Июн 2021 в 15:23

Да! Поскольку в одном месте может быть несколько событий, вы можете определить такие отношения в модели Venue:

public function events()
{
    return $this->belongsTo(Event::class);
}

См .: https://laravel.com/docs/ 8.x / eloquent-Relationship # один-ко-многим-обратным

0
user3563059 13 Июн 2021 в 14:39