Я работаю со сторонней базой данных, которую не могу изменить. В моем проекте у меня есть две модели: Cliente(client) и Ruta(route), которые имеют связь многие-ко-многим, поэтому я добавил в свои модели связь ownToMany.
Единственный столбец в сводной таблице, который меня интересует, называется DESACTIV и сообщает мне, деактивирован ли Клиент для Маршрута.
Модель Рута:
Код: Выделить всё
class Ruta extends Model
{
protected $connection = 'mysql2';
protected $table = 'truta';
protected $primaryKey = 'CODIRUTA';
public function clientes(){
return $this->belongsToMany(Cliente::class, 'tcpcarut', 'CODIRUTA', 'CODICLIE')->withPivot('DESACTIV');
}
}
Код: Выделить всё
class Cliente extends Model
{
protected $connection = 'mysql2';
protected $table = 'tcpca';
protected $primaryKey = 'CODICLIE';
public function rutas(){
return $this->belongsToMany(Ruta::class, 'tcpcarut', 'CODICLIE', 'CODIRUTA')->withPivot('DESACTIV');
}
}
Я сделал это на своем контроллере следующим образом:
Код: Выделить всё
$miRuta = Ruta::where('CODIRUTA','=',$ruta)->first();
$clientes = array();
foreach ($miRuta->clientes as $cliente){
if ($cliente->DESACTIV == 0){
array_push($clientes, $cliente->NOMBCLIE);
echo end($clientes)."
";
}
}
- Может быть, я мог бы добавить фильтр к методу clientes в моей модели Рута, чтобы он возвращал только активных Клиентов.
- Или, может быть, лучше добавить метод в модели Cliente, например isDeactivated
Подробнее здесь: https://stackoverflow.com/questions/440 ... ble-column
Мобильная версия