У меня есть эта структура базы данных. 2 таблицы: shipment_out
, stock_move
.
shipment_out
имеет типичное поле целочисленного идентификатора первичного ключа.
stock_move
имеет поле с именем shipment
строкового типа. Это поле может иметь следующие значения:
"stock_shipment_out,1512",
"stock_shipment_in,65400",
"sale.line,358",
(...)
Дело в том, что таблица stock_move связана с несколькими таблицами, основанными на одном и том же поле, поэтому раньше она имела этот текст.
В этом случае Я хочу определить отношение: shipment_out
hasMany stock_move
. Итак, мне нужно присоединиться через stock_move.shipment имеет это значение: 'stock_shipment_out, {id}'.
Итак, как я могу определить эту взаимосвязь? Было бы что-то вроде:
public function stockMoves()
{
return $this->hasMany(StockMove::class, 'shipment', 'stock.shipment.out,id');
}
Я могу достичь этих отношений с построителем запросов:
$shipments = ShipmentOut
::join('public.stock_move', DB::raw('CONCAT(\'stock.shipment.out,\',public.stock_shipment_out.id)'), '=', 'stock_move.shipment')
->where('stock_shipment_out.id', '=', $shipmentOut);
Но мне тоже нужны отношения ...