Свойство [клиент] не существует в этом экземпляре коллекции - PullRequest
0 голосов
/ 29 декабря 2018

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

Таблица бронирования

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class booking extends Model
{
    protected $primaryKey = 'bookingID';
   protected $fillable = ['clientID', 'checkInDate', 'checkOutDate', 'roomsCount', 'roomTypeID', 'adultsCount', 'childrenCount', 'amenityID', 'paymentID'];

    public function client()
    {
        return $this->hasOne(Client::class,'clientID');
    }

}

Таблица клиента

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class client extends Model
{
  protected $primaryKey = 'clientID';
   protected $fillable = ['fullNmae', 'firstName', 'lastName', 'phoneNumber', 'emailAddress'];
  public function booking()
  {
      return $this->hasMany(Booking::class);
  }
}

Я попытался добавить protected $primaryKey = 'bookingID'; и protected $primaryKey = 'clientID';, как предложено в моем предыдущем вопросе, но теперь я все еще не могу получить только FirstName из клиентской таблицы.

$bookingDetail = booking::with('client')->get();
    return  $bookingDetail->client->firstName;

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Вы пытаетесь получить свойство из коллекции в следующих строках:

$bookingDetail = booking::with('client')->get();
return  $bookingDetail->client->firstName;

, но это свойство client определено для объекта, а не для коллекции.так что для ее решения вы должны взять один объект из коллекции, как показано ниже:

0 голосов
/ 29 декабря 2018

То, что вам нужно попробовать, это:

в вашей модели бронирования: // 'App \ Client' вот пример, который вам нужно указать путь к модели клиента

public function client()
    {
        return $this->belongsTo('App\Client','clientID');
    }

в вашей модели клиента:

public function booking()
  {
      return $this->hasMany('App\Booking' , 'clientID');
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...