Laravel 5.6 консультируется whereNotExist

У меня есть практика, где должны присоединяться автомобили в страхователя и мочь выписывать Ваши страховки, и я пробую делать консультацию, которая, в момент selecionar страхователь списка, возвращала бы все транспортные средства, которые не в этом страхователе (включая тех, которые находятся в других), но ее прокрутив изображение в окне, он ничего не возвращает мне.

Будь функцией в драйвере:

public function mostrarVehNAs(Request $request){
            $aseguradora = 2;
            $datos = \DB::table('crlo_vehiculos')
            ->whereNotExists(function ($query) {
                $aseguradora = 2;
                $query->select(\DB::raw(1))
                      ->from('crlo_veh_asegurados')
                      ->whereRaw('crlo_veh_asegurados.id_aseguradora', '=', $aseguradora);
            })
            ->get();
            return $datos;
            } 

Подмостки были бы:

страхователи

------------------------------------
| id_aseguradora | nom | direccion |
------------------------------------

транспортные средства

-------------------------------------------------------------
| id_vehiculo | marca | modelo | ano | tipo | color | serial |
--------------------------------------------------------------

veh_asegurados

-------------------------------------------------------
| id_aseg | id_vehiculo | id_aseguradora | id_vigencia |
--------------------------------------------------------

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

Заранее спасибо за Ваши ответы.

6
задан 15.06.2019, 18:24
1 ответ

Первое всего состоит в том, чтобы создавать модель и связи, чтобы использовать eloquent и продолжать архитектуру, которую предлагает Laravel. OlvГ - восходите использования helper DB:: table () и Raw, ввиду того, что estГЎn подумавшие для более пунктуальных и сложных случаев.

Сначала верьте в твой класс для crlo_vehiculos (мы назовем ее CrloVehiculo):

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
//use Illuminate\Database\Eloquent\SoftDeletes;

class CrloVehiculo extends Model
{
    //use SoftDeletes;

    //protected $dates = [ 'deleted_at' ];

    protected $table = 'crlo_vehiculos';

    protected $fillable = [
        'id',
        'otro_campo',
    ];
}

Сейчас внутри моделей мы создадим их relaciГіn (заблаговременно мы создадим модель для crlo_veh_asegurados с именем CrloVehiculoAsegurado)

В этом случае сделаем 1 1 в CrloVehiculoAsegurado

public function vehiculo(){
        return $this->hasOne(CrloVehiculo::class, 'id', 'id_vehiculo');
    }

и Ваш корреспондент в CrloVehiculo

public function aseguradora()
{
    return $this->belongsTo(CrloVehiculoAsegurado::class, 'id_vehiculo', 'id');
}

Si у тебя есть все связи он простой, только ты нуждаешься в том, чтобы поместить одну функционируй, чтобы просачиваться в with или использовать whereHas, если то, что ты хочешь, filtar

 public function mostrarVehNAs(){
        $aseguradora = 2;
        return  CrloVehiculo::whereHas('aseguradora' => function($query) use ($aseguradora){
            $query->where('id_aseguradora', $aseguradora);  // Subquery
        })->get();
    }
0
ответ дан 03.12.2019, 00:59

Теги

Похожие вопросы