Laravel 5.1: отношения с SQLite Rowid?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Laravel 5.1: отношения с SQLite Rowid?

Сообщение Anonymous »

У меня есть база данных SQLite из другого программного обеспечения, которое мне нужно интегрировать в свой собственный API. Я начал с этой задачи (несколько баз данных) успешно, добавив модели и отношения к моему API в Laravel. Примерно так: < /p>
модель 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');
}
}
Модель B: [/b] имеет 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');
}
}
контроллер: избирает все данные, используя метод «с ()». Это отлично работает для всех «нормальных ссылок», но не для ссылки на SQLite Rowid. < /P>

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»