модель A: < /strong>
имеет столбец с именем «bu_zimmer», в котором хранится «rowid» другой модели (b) < /p>
Код: Выделить всё
class LdBooking extends Model
{
protected $connection = 'lodgitDB';
protected $table = 'b_buchungen';
protected $primaryKey = 'rowid';
public $timestamps = false;
public function rentalunit()
{
return $this->belongsTo('App\Models\LodgitDesk\LdRentalunit', 'BU_ZIMMER', 'rowid');
}
}
Код: Выделить всё
class LdRentalunit extends Model
{
protected $connection = 'lodgitDB';
protected $table = 'o_mieteinheit';
protected $primaryKey = 'rowid';
public $timestamps = false;
public function bookings()
{
return $this->hasMany('App\Models\LodgitDesk\LdBooking', 'rowid', 'BU_ZIMMER');
}
}
Код: Выделить всё
public function show($id)
{
return $this->respond( LdBooking::with('rentalunit')->with('category')->select('rowid', '*')->findOrFail($id) );
}
. Выберите Rowid из таблицы. Вот почему я обычно добавляю их вручную к красноречиво -овечению -> select ('rowid', '*') . Но я не знаю, как учить мои отношения, что если она присоединяется к другой таблице по ключу «rowid», сначала нужно выбрать этот «rowid». < /P>
Есть ли способ это сделать? Может изменить модель? Или возможно облегчить эту проблему? В контроллере я изменил запрос на: < /p>
Код: Выделить всё
public function show($id)
{
$booking = LdBooking::with(['rentalunit' => function($query) {
$query->select('rowid', '*');
}])->select('rowid', '*')->findOrFail($id);
return $this->respond($booking);
}
< /code>
Это принесло мне связанную аренду и автоматически подтолкнул его к возвращаемому результату. Я хотел бы решить эту проблему напрямую в модели, чтобы в контроллере я просто мог написать -> с ('RentalUnit') есть способ?
Подробнее здесь: https://stackoverflow.com/questions/340 ... lite-rowid
Мобильная версия