Получить несколько значений внешнего ключа и вывести их на просмотр - PullRequest
0 голосов
/ 29 декабря 2018

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

Бронирование

    <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

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


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

Клиент

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

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

Платеж

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class payment extends Model
{
   protected $fillable = ['clientID', 'paymentMethod', 'invoiceNum', 'accountName', 'amountPaid', 'datePaid', 'payment_image', 'comments'];
  public function booking()
  {
      return $this->belongsTo('App\Booking');
  }
}

В настоящее время я использую это для доступа к внешнему ключу

$bookingDetail = booking::with('client', 'payment')->get();
        return view('detail')
        ->with('bookingDetail', $bookingDetail);

view

{{ $bookingDetail->payment->paymentMethod }}

Ошибка, которую я получаю

SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец «clients.id» в «предложении where» (SQL: выберите * из clientsгде clients. id in (3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17))

Это правильный способ сделать это?или я что-то упустил.Я новичок в Laravel, поэтому я не знаю, является ли это правильным способом сделать это

1 Ответ

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

Когда вы определяете отношение, laravel может обнаружить ваши внешние ключи, используя структуру "methodName" + "_id".

Но если ваш внешний ключ не совпадает с этим шаблоном, вам нужно указать ключи вручную.

public function booking()
{
  return $this->belongsTo('App\Booking',$foreignKey,$ownerKey);
}

public function payment()
{
    return $this->hasOne('App\Payment',$foreignKey, $ownerKey);
}
...