IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Laravel PHP Discussion :

SQL VIEWS dans Laravel


Sujet :

Laravel PHP

  1. #1
    Membre éclairé Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Par défaut SQL VIEWS dans Laravel
    Bonjour à tous.

    J'utile SQL Server 2017 Developper et IIS10 fonctionnant sur Windows 10 Home.

    Avec l'aide inestimable et la patience de fsmrel, j'ai une base de données dont les Inserts et les Updates se font entièrement en passant par les SQL Views avec des Triggers "ALTER TRIGGER [dbo].[..._INSERT_TR] ON [dbo].[...] INSTEAD OF INSERT" et "ALTER TRIGGER [dbo]..._UPDATE_TR] ON [dbo].[...] INSTEAD OF UPDATE".

    Je me suis intéressé à Laravel pour le développement de mon site Web et j'ai conçu une petite application WEB bidon pour étudier Laravel. Par contre, il semble que Laravel opère directement sur les Tables et non sur les SQL Views... Est-ce possible de concevoir mon site WEB avec Laravel en utilisant mes SQL Views ou est-ce préférable de regarder pour une autre alternative?

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Si ce sont des vues, il n'y pas de soucis, si c'est un autre système, alors vous devrez passer pas DB de Laravel (native) : https://laravel.com/docs/5.8/database

  3. #3
    Membre éclairé Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Par défaut
    Bonjour MaitrePylos, je parle des vues de SQL Server. Mais dans Laravel on parle de "id" dans les "Tables" ce qu'il n'y a pas dans les "Vues".

    Est-ce que je pourrais faire ceci ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    namespace App;
     
    use Eloquent;
     
    class ViewBlabla extends Eloquent
    {
        protected $table = 'blabla';
    }
    Citation Envoyé par MaitrePylos Voir le message
    Si ce sont des vues, il n'y pas de soucis, si c'est un autre système, alors vous devrez passer pas DB de Laravel (native) : https://laravel.com/docs/5.8/database

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Pourquoi il n'y a pas de id dans une vue, cela reste un résultat que l'on peux traiter avec une requête SQL, donc le id à tout sons sens.
    Par contre si votre clé primaire de votre vue ne s'appelle pas id c'est pas grave il suffit de le définir dans le model.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    <?php
     
    namespace App;
     
    use Eloquent;
     
    class ViewBlabla extends Eloquent
    {
        protected $table = 'blabla';
        protected $primaryKey = 'key_primary'
    }

  5. #5
    Membre éclairé Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Par défaut
    Bonjour MaîtrePylos....

    Peut-être que je m'explique mal ou que je ne vous comprend pas. Mais pour ce qui est de Laravel, je commence seulement à l'étudier alors je n'ai pas encore compris entièrement le principe. J'avais barryvdh/debugbar que je trouvais pratique mais il a cessé de fonctionner et je n'arrive pas à le refaire fonctionner même avec une installation propre de Laravel.

    Mes tables dans SQL Server ont tous des id. Pour les vues, je parle des vues de SQL Server et non des vues de Laravel. Dans ans les vues de SQL Server, je n'ai aucun id. Donc ce que je veux faire dans Laravel c'est d'utiliser les vues de SQL Server sans utiliser les tables de SQL Server. Dans SQL Server, je peux gérer entièrement la base de données pour les INSERT, UPDATE, DELETE à l'aide des vues sans jamais utiliser les Tables. Dans mon exemple "protected $table = 'blabla';" le 'blabla' désignait une vue de SQL Server et non une table.

    Ici une vue dans "SQL Server"

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    CREATE VIEW [dbo].[CAMION_LOCALISATION_V]
        (
           VIN, Number, Immat
         , DateMfg, DateAchat, DateSold
         , Manufacturer, Model
         , Seller
         , ContactType
         , WheelBase, Color
         , USDOT, ICCMC, GVWR
         , Note
        )
    AS
        SELECT CamionVIN, CamionNumber, CamionImmat
             , CamionDateMfg, CamionDateAchat, CamionDateVente
             , t.ContactName, TruckModelName
             , COALESCE(v.ContactName, '-')
             , COALESCE(ContactTypeName, '-')
             , CamionWheelBase, CamionColor        
             , USDOT, ICCMC, GVWR
             , LocalisationNote
        FROM   CAMION AS x JOIN LOCALISATION AS y ON x.CamionId = y.LocalisationId
                           JOIN TRUCK_MODEL AS z ON x.TruckManufacturerId = z.TruckManufacturerId 
                                                AND x.TruckModelId = z.TruckModelId
                           JOIN CONTACT AS t ON z.TruckManufacturerId = t.ContactId
                           LEFT JOIN TRUCK_PURCHASE As u ON u.TruckId = x.CamionId
                           LEFT JOIN CONTACT AS v ON v.ContactId = u.ContactId
                           LEFT JOIN CONTACT_TYPE as w ON w.ContactTypeId = v.ContactTypeId
    ;
    GO

    Ici le trigger dans "SQL Server" pour le insert :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    USE [DZINDZIO_TRUCKS_MANAGEMENT_GILLES]
    GO
     
    /****** Object:  Trigger [dbo].[CAMION_LOCALISATION_INSERT_TR]    Script Date: 2019-05-07 16:19:12 ******/
    SET ANSI_NULLS ON
    GO
     
    SET QUOTED_IDENTIFIER ON
    GO
     
     
    CREATE TRIGGER [dbo].[CAMION_LOCALISATION_INSERT_TR] ON [dbo].[CAMION_LOCALISATION_V] INSTEAD OF INSERT
    AS
     
    DECLARE @errorMissingPair as VARCHAR(64) = 'Missing or invalid pair truck/engine.'
    DECLARE @theTrigger as VARCHAR(64) = 'CAMION_LOCALISATION_INSERT_TR'
    DECLARE @EngueuladeIntro AS VARCHAR(128) = @theTrigger + ' - Création de camions (insert) : '  
                                                           + CHAR(13) + '        '  ;
    DECLARE @Engueulade AS VARCHAR(512) ;
    DECLARE @errorCountInserted AS VARCHAR(64) = 'Un seul camion à la fois SVP.' ;
    DECLARE @errorMissingVIN AS VARCHAR(64) = 'Missing or invalid VIN!' ;
    DECLARE @errorVINenDouble AS VARCHAR(64) = 'VIN déjà utilisé' ;
    DECLARE @errorMissingManufacturerName AS VARCHAR(64) = 'Missing or invalid Manufacturer name pour le camion de VIN ''' ;
    DECLARE @errorMissingModelName AS VARCHAR(64) = 'Missing or invalid Model name pour le camion de VIN ''' ;
    DECLARE @errorUnknownManufacturer AS VARCHAR(64) = 'Unknown Manufacturer pour le camion de VIN ''' ;
    DECLARE @errorUnknownModel AS VARCHAR(64) = 'Unknown Model pour le camion de VIN ''' ;
    DECLARE @ImmatEnDouble AS VARCHAR(64) = 'Immatriculation déjà utilisée, voir le camion de VIN ''' ;
    DECLARE @NumberEnDouble AS VARCHAR(64) = 'Camion Number déjà utilisé, voir le camion de VIN ''' ;
    DECLARE @errorSequenceDatesMfgAchat AS  VARCHAR(96) = 'La date de fabrication du camion ne peut pas être postérieure à sa date d''achat'
    DECLARE @errorSequenceDatesAchatVente AS  VARCHAR(96) = 'La date d''achat du camion ne peut pas être postérieure à sa date de  vente'
    DECLARE @errorSequenceDatesMfgVente AS  VARCHAR(96) = 'La date de fabrication du camion ne peut pas être postérieure à sa date de vente'
     
    DECLARE @Degager AS CHAR(1) = 'N'
    DECLARE @ErrorSequenceDates AS CHAR(1) = 'N'
    DECLARE @InvalidManufacturerName AS CHAR(1) = 'N'
     
    DECLARE @N   as  int ;
     
    DECLARE @ManufacturerId AS INT ;
    DECLARE @ModelId AS INT ;
     
    DECLARE @ManufacturerName AS VARCHAR(48) ;
    DECLARE @ModelName AS VARCHAR(48) ;
     
    DECLARE @immat as varchar(16) ;
    DECLARE @number as varchar(6) ;
     
    DECLARE @CamionVIN AS VARCHAR(24)
    DECLARE @AutreCamion AS VARCHAR(24) ;
     
    DECLARE @DateParDefaut as DATE = '9999-12-31' ;
    DECLARE @MfgDateOld as DATE ;
    DECLARE @MfgDateNew as DATE ;
    DECLARE @PurchaseDateOld as DATE ;
    DECLARE @PurchaseDateNew as DATE ;
    DECLARE @SaleDateOld as DATE ;
    DECLARE @SaleDateNew as DATE ;
     
    DECLARE @CategorieQuelconque as CHAR(1) = 'z'
     
    ---- pour debug ---- select @theTrigger as '@theTrigger'
    ---- pour debug ---- select '' as INSERTED, * from INSERTED  
     
    ------------------------------------------------------
    -- INSERTED ne doit pas être vide
    ------------------------------------------------------
     
    IF (SELECT COUNT(*) from INSERTED) = 0
        BEGIN 
             SET @Engueulade = @EngueuladeIntro + @errorMissingPair
             SELECT @Engueulade AS Engueulons
     --------        RAISERROR (@Engueulade,16,1)  -- state = 16 pour bloquer  
             RAISERROR (@Engueulade,0,1)  -- state = 0 pour les tests 
             RETURN
        END
     
    -------------------------------------------------------
    -- Pour le moment on ne fait pas dans le multi-insert
    -------------------------------------------------------
     
    IF (SELECT COUNT(*) from INSERTED) > 1
       BEGIN
             SET @Engueulade = @EngueuladeIntro + @errorCountInserted
             SELECT TOP 5 @Engueulade AS Engueulons, * FROM INSERTED
     --------        RAISERROR (@Engueulade,16,1)  -- state = 16 pour bloquer  
             RAISERROR (@Engueulade,0,1)  -- state = 0 pour les tests 
             RETURN
       END
     
    SET @ManufacturerName = TRIM((SELECT Manufacturer FROM INSERTED)) ;
    SET @ModelName = TRIM((SELECT Model FROM INSERTED)) ;
     
    ---- pour debug ----- select @ManufacturerName AS '@ManufacturerName'
    ---- pour debug ----- select @ModelName AS '@ModelName'
     
    ----------------------------------------------------------
    -- Le VIN du camion doit être renseigné
    ----------------------------------------------------------
     
    SET @CamionVIN = (SELECT VIN FROM INSERTED)
     
    ---- pour debug select @CamionVIN as '@CamionVIN'
     
    IF @CamionVIN IS NULL
        BEGIN
            SET @Engueulade = @EngueuladeIntro + @errorMissingVIN
            SELECT @Engueulade AS Engueulons, * FROM INSERTED
    ---------------         RAISERROR (@Engueulade, 16,1)  -- state = 16 pour bloquer  
            RAISERROR (@Engueulade, 0,1)  -- state = 0 pour les tests
            SET  @Degager = 'Y'
            RETURN  
        END
     
    ----------------------------------------------------------
    -- Le VIN du camion ne doit pas déjà être affecté
    -- à un autre camion.
    ----------------------------------------------------------
     
    SET @AutreCamion = (SELECT CamionVIN FROM CAMION WHERE CamionVIN = @CamionVIN)
     
    ---- pour debug ----- select @AutreCamion as '@AutreCamion'
     
    IF @AutreCamion IS NOT NULL
        BEGIN
            SET @Engueulade = @EngueuladeIntro + @errorVINenDouble
                            + ' : ''' + @CamionVIN + '''.'                       
            SELECT @Engueulade AS Engueulons, * FROM INSERTED
    ---------------         RAISERROR (@Engueulade, 16,1)  -- state = 16 pour bloquer  
            RAISERROR (@Engueulade, 0,1)  -- state = 0 pour les tests
            SET  @Degager = 'Y'
            RETURN  
        END
     
    ----------------------------------------
    -- Contrôle des dates
    ----------------------------------------
     
    SET @MfgDateNew = (SELECT DateMfg FROM INSERTED) ; 
    SET @PurchaseDateNew = (SELECT DateAchat FROM INSERTED) ; 
    SET @SaleDateNew = (SELECT DateSold FROM INSERTED) ;
     
    IF @MfgDateNew IS NULL SET @MfgDateNew = @DateParDefaut
    IF @PurchaseDateNew IS NULL SET @PurchaseDateNew = @DateParDefaut
    IF @SaleDateNew IS NULL SET @SaleDateNew = @DateParDefaut
     
    ----pour debug--------select @MfgDateNew as '@MfgDateNew'
    ----pour debug--------select @PurchaseDateNew as '@PurchaseDateNew'
    ----pour debug--------select @SaleDateNew as '@SaleDateNew'
     
    IF @MfgDateNew <> @DateParDefaut AND @PurchaseDateNew <> @DateParDefaut 
        AND @MfgDateNew > @PurchaseDateNew
        BEGIN
            SET @Engueulade = @EngueuladeIntro + @errorSequenceDatesMfgAchat 
                            + ' (Truck VIN : ' + @CamionVIN + '''' 
                            + ' ; Mfg Date = ''' + CAST(@MfgDateNew AS VARCHAR) + ''''
                            + ', Purchase Date = ''' + CAST(@PurchaseDateNew AS VARCHAR) + ''').'
            SELECT @Engueulade AS Engueulons
         --------        RAISERROR (@Engueulade,16,1)  -- state = 16 pour bloquer  
            RAISERROR (@Engueulade,0,1)  -- state = 0 pour les tests 
            SET @ErrorSequenceDates = 'Y'
            SET @Degager = 'Y'
            ---- RETURN  différé
        END
     
    IF @PurchaseDateNew <> @DateParDefaut  AND @SaleDateNew <> @DateParDefaut
        AND @PurchaseDateNew > @SaleDateNew
        BEGIN
            SET @Engueulade = @EngueuladeIntro + @errorSequenceDatesAchatVente   
                            + ' (Truck VIN : ' + @CamionVIN + ''''   
                            + ' ; Purchase Date = ''' + CAST(@PurchaseDateNew AS VARCHAR) + ''''
                            + ', Sale Date = ''' + CAST(@SaleDateNew AS VARCHAR) + ''').'
            SELECT @Engueulade AS Engueulons
         --------        RAISERROR (@Engueulade,16,1)  -- state = 16 pour bloquer  
            RAISERROR (@Engueulade,0,1)  -- state = 0 pour les tests 
            SET @ErrorSequenceDates = 'Y'
            SET @Degager = 'Y'
            ---- RETURN  différé
        END
     
    IF @MfgDateNew <> @DateParDefaut AND @MfgDateNew > @SaleDateNew
        BEGIN
            SET @Engueulade = @EngueuladeIntro + @errorSequenceDatesMfgVente 
                            + ' (Truck VIN : ' + @CamionVIN + ''''     
                            + ' ; Mfg Date = ''' + CAST(@MfgDateNew AS VARCHAR) + ''''
                            + ', Sale Date = ''' + CAST(@SaleDateNew AS VARCHAR) + ''').'
            SELECT @Engueulade AS Engueulons
         --------        RAISERROR (@Engueulade,16,1)  -- state = 16 pour bloquer  
            RAISERROR (@Engueulade,0,1)  -- state = 0 pour les tests 
            SET @ErrorSequenceDates = 'Y'
            SET @Degager = 'Y'
            ---- RETURN  différé
        END
     
    ----------------------------------------------------------
    -- Le manufacturier doit être connu en tant que contact
    ----------------------------------------------------------
     
    IF @ManufacturerName IS NULL OR LEN(@ManufacturerName) = 0
        BEGIN
            SET @Engueulade = @EngueuladeIntro + @errorMissingManufacturerName
                            + @CamionVIN + '''.'                       
            SELECT @Engueulade AS Engueulons, * FROM INSERTED
    ---------------         RAISERROR (@Engueulade, 16,1)  -- state = 16 pour bloquer  
            RAISERROR (@Engueulade, 0,1)  -- state = 0 pour les tests
            SET @InvalidManufacturerName = 'Y'
            SET  @Degager = 'Y'
           ---- RETURN  
        END                
    ELSE
        BEGIN
            SET @ManufacturerId = 
                (SELECT ContactId FROM CONTACT WHERE ContactName = @ManufacturerName)
     
            ---- pour debug ----- select @ManufacturerId AS '@ManufacturerId'
     
            IF @ManufacturerId IS NULL
                BEGIN
                    SET @Engueulade = @EngueuladeIntro 
                                           + 'Manufacturer ''' + @ManufacturerName + ''' : ' 
                                           + @errorUnknownManufacturer
                                           + @CamionVIN + '''.'     
                    SELECT @Engueulade AS Engueulons, * FROM INSERTED
            ---------------         RAISERROR (@Engueulade, 16,1)  -- state = 16 pour bloquer  
                    RAISERROR (@Engueulade, 0,1)  -- state = 0 pour les tests
                    SET @InvalidManufacturerName = 'Y'
                    SET  @Degager = 'Y'
               ---- RETURN  Différé  
                END
        END
     
    ----------------------------------------------------------
    -- Le modèle doit être un modèle du manufacturier
    ----------------------------------------------------------
     
    IF @InvalidManufacturerName = 'N'
        BEGIN
            IF @ModelName IS NULL OR LEN(@ModelName) = 0
                BEGIN
                    SET @Engueulade = @EngueuladeIntro + @errorMissingModelName
                                    + @CamionVIN + ''', Manufacurer : '''
                                    + @ManufacturerName + '''.'                       
                    SELECT @Engueulade AS Engueulons, * FROM INSERTED
            ---------------         RAISERROR (@Engueulade, 16,1)  -- state = 16 pour bloquer  
                    RAISERROR (@Engueulade, 0,1)  -- state = 0 pour les tests
                    SET  @Degager = 'Y'
                    ---- RETURN  
                END                
            ELSE
                BEGIN
                    SET @ModelId = 
                        (SELECT TruckModelId FROM TRUCK_MODEL 
                        WHERE TruckModelName = @ModelName 
                          AND TruckManufacturerId = @ManufacturerId)
     
                    ---- pour debug ----- select @ModelId AS '@ModelId'
     
                   IF @ModelId IS NULL
                       BEGIN
                           SET @Engueulade = @EngueuladeIntro 
                                           + 'Model ''' + @ModelName + ''' : ' 
                                           + @errorUnknownModel
                                    + @CamionVIN + ''', Manufacurer : '''
                                    + @ManufacturerName + '''.'                       
                           SELECT @Engueulade AS Engueulons, * FROM INSERTED
                  ---------------         RAISERROR (@Engueulade, 16,1)  -- state = 16 pour bloquer  
                           RAISERROR (@Engueulade, 0,1)  -- state = 0 pour les tests
                           SET  @Degager = 'Y'
                           ---- RETURN  
                       END
                END
        END
    ----------------------------------------------------------
    -- Si l'immat est renseignée, elle doit être unique 
    ----------------------------------------------------------
     
    SET @immat = (SELECT COALESCE(Immat, '0') FROM INSERTED) ;
     
    ---- pour debug ---- select @immat as '@immat' ; 
     
    IF @immat <> '0'
        BEGIN 
            SET @N = (SELECT COUNT(*) FROM CAMION WHERE CamionImmat = @immat)
            ---- pour debug ---- select @N as '@N' ; 
            IF @N > 0
                 BEGIN 
                     SET @AutreCamion = (SELECT TOP 1 CamionVIN FROM CAMION WHERE CamionImmat = @immat) 
                     SET @Engueulade = @EngueuladeIntro
                            + ' Camion de VIN ''' + @CamionVIN + ''' : ' + @ImmatEnDouble
                            + @AutreCamion + '''.'                                
                     SELECT @Engueulade AS Engueulons, * FROM INSERTED
        ---------------  RAISERROR (@Engueuladet, 16,1)  -- state = 16 pour bloquer  
                     RAISERROR (@Engueulade, 0,1)  -- state = 0 pour les tests 
                    SET  @Degager = 'Y'
                    ---- RETURN  différé  
                 END
        END
     
    ------------------------------------------------------------
    -- Si le camion number est renseigné, il doit être unique 
    ------------------------------------------------------------
     
    SET @number = (SELECT COALESCE(Number, '0') FROM INSERTED) ;
     
    ---- pour debug ---- select @number as '@number' ; 
     
    IF  @number <> '0' 
        BEGIN
            IF (SELECT COUNT(*) FROM CAMION WHERE CamionNumber = @number) > 0
                BEGIN 
                    SET @AutreCamion = (SELECT TOP 1 CamionVIN FROM CAMION WHERE CamionNumber = @number) 
                    SET @Engueulade = @EngueuladeIntro
                            + ' Camion de VIN ''' + @CamionVIN + ''' : ' + @NumberEnDouble
                            + @AutreCamion + '''.'                                
                    SELECT @Engueulade AS Engueulons, * FROM INSERTED
        -------------   RAISERROR (@Engueulade, 16,1)  -- state = 16 pour bloquer  
                    RAISERROR (@Engueulade, 0,1)  -- state = 0 pour les tests 
                    SET  @Degager = 'Y'
                    ---- RETURN   différé 
               END
        END
     
    ----------------------------------------------------------------------
    -- Traitement du vendeur. Si le nom du vendeur est fourni 
    -- et si ce nom n'existe pas dans la table CONTACT
    -- (colonne ontactName), on l'insère dans la table CONTACT 
    -- avec le type quelconque ('z'). 
    -- Dans tous les cas, si le nom du vendeur est fourni on met à jour
    -- la table TRUCK_PURCHASE.
    ----------------------------------------------------------------------
     
    DECLARE @Vendeur AS VARCHAR(48)
    DECLARE @VendeurId AS INT
    DECLARE @VendeurEnBase AS CHAR(1) = 'N'
    DECLARE @CamionId AS INT
     
    SET @Vendeur = TRIM((SELECT Seller FROM INSERTED))
     
    IF @Vendeur IS NOT NULL AND LEN(@Vendeur) > 0
        BEGIN
            SET @VendeurId = (SELECT ContactId 
                              FROM CONTACT 
                              WHERE ContactName = @Vendeur)
            IF @VendeurId IS NOT NULL
                BEGIN
                    SET @VendeurEnBase = 'Y' 
                END
        END   
     
    ---- pour debug ---- select @Vendeur as '@Vendeur'
    ---- pour debug ---- select @VendeurId as '@VendeurId'
    ---- pour debug ---- select @VendeurEnBase as '@VendeurEnBase'
    ---- pour debug ---- select @CamionVIN as '@CamionVIN'
     
    ---------------------------------------
    -- Si erreurs détectées, on dégage
    ---------------------------------------
     
    IF @Degager = 'Y'
        BEGIN
            RETURN
        END
     
    ------------------------------------------------
    -- On crée le camion
    ------------------------------------------------
    INSERT INTO LOCALISATION (LocalisationNote)
        SELECT COALESCE(Note, '-') FROM INSERTED ;
     
    ---- pour debug ----select 'avant insert' 
     
    INSERT INTO CAMION 
        (
          CamionId, CamionVIN, CamionNumber, CamionImmat
        , TruckManufacturerId, TruckModelId
        , CamionDateMfg, CamionDateAchat, CamionDateVente
        , CamionWheelBase, CamionColor
        , USDOT, ICCMC, GVWR 
       )
        SELECT (SELECT MAX(LocalisationId) FROM LOCALISATION) 
               , VIN
               , CASE TRIM(Number) WHEN '' THEN '0' ELSE COALESCE(Number, '0') END
               , CASE TRIM(Immat) WHEN '' THEN '0' ELSE COALESCE(Immat, '0') END
               , @ManufacturerId, @ModelId
               , COALESCE(DateMfg, CAST('9999-12-31' as DATE))
               , COALESCE(DateAchat, CAST('9999-12-31' as DATE))
               , COALESCE(DateSold, CAST('9999-12-31' as DATE))
               , COALESCE(WheelBase, 0)
               , COALESCE(Color, 'White')           
               , COALESCE(USDOT, '0'), COALESCE(ICCMC, '0'), COALESCE(GVWR, 0)
        FROM   INSERTED ; 
     
    IF @Vendeur IS NOT NULL AND LEN(@Vendeur) > 0  
        BEGIN
            IF @VendeurEnBase = 'N'
                BEGIN
                   INSERT INTO CONTACT (ContactName, ContactTypeId)
                       SELECT @Vendeur
                             , (SELECT ContactTypeId 
                                FROM   CONTACT_TYPE 
                                WHERE  LOWER(ContactTypeShort) = @CategorieQuelconque)
                END
     
            SET @VendeurId = (SELECT ContactId FROM CONTACT WHERE ContactName = @Vendeur) 
            SET @CamionId = (SELECT CamionId from CAMION WHERE CamionVIN = @CamionVIN)
     
    ---- pour debug ---- select @CamionId as '@CamionId'
     
            INSERT INTO TRUCK_PURCHASE (TruckId, ContactId)
                SELECT @CamionId, @VendeurId
        END
     
     
    ---- pour debug ---- select 'après insert' 
    GO

    Et ici pour faire mon insert dans SQL Server :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    INSERT INTO [dbo].[CAMION_LOCALISATION_V]
               ([VIN]
               ,[Number]
               ,[Immat]
               ,[DateMfg]
               ,[DateAchat]
               ,[DateSold]
               ,[Manufacturer]
               ,[Model]
               ,[Seller]
               ,[ContactType]
               ,[WheelBase]
               ,[Color]
               ,[USDOT]
               ,[ICCMC]
               ,[GVWR]
               ,[Note])
         VALUES
               (<VIN, varchar(24),>
               ,<Number, varchar(6),>
               ,<Immat, varchar(9),>
               ,<DateMfg, date,>
               ,<DateAchat, date,>
               ,<DateSold, date,>
               ,<Manufacturer, varchar(48),>
               ,<Model, varchar(48),>
               ,<Seller, varchar(48),>
               ,<ContactType, varchar(32),>
               ,<WheelBase, int,>
               ,<Color, varchar(15),>
               ,<USDOT, varchar(10),>
               ,<ICCMC, varchar(10),>
               ,<GVWR, int,>
               ,<Note, varchar(128),>)
    GO

    Désolé si ça fait un peu long. Je n'ai pas trouvé beaucoup d'information pour utiliser directement des vues de SQL Server dans Laravel car il semble que ce ne soit pas la façon de procéder avec Laravel. Donc est-ce que je peux faire quelque chose avec ça dans Laravel ou si c'est préférable que je procède autrement ? J'ai plusieurs vues dans SQL Server puisque je gère la base de données entièrement à l'aide des vues.

    Merci MaîtrePylos

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bon alors vous avez deux façon de faire.

    Un (ce que je ferais si je veux utiliser Eloquent), c'est que je mettrais un id dans ma vue.
    Un peu comme ça, mais je sais pas si c'est une bonne pratique chez vous :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    CREATE VIEW [dbo].[CAMION_LOCALISATION_V]
        (
          id integer
         , VIN, Number, Immat
         , DateMfg, DateAchat, DateSold
         , Manufacturer, Model
         , Seller
         , ContactType
         , WheelBase, Color
         , USDOT, ICCMC, GVWR
         , Note
        )
    AS
        SELECT CamionId,CamionVIN, CamionNumber, CamionImmat
             , CamionDateMfg, CamionDateAchat, CamionDateVente
             , t.ContactName, TruckModelName
             , COALESCE(v.ContactName, '-')
             , COALESCE(ContactTypeName, '-')
             , CamionWheelBase, CamionColor        
             , USDOT, ICCMC, GVWR
             , LocalisationNote
        FROM   CAMION AS x JOIN LOCALISATION AS y ON x.CamionId = y.LocalisationId
                           JOIN TRUCK_MODEL AS z ON x.TruckManufacturerId = z.TruckManufacturerId 
                                                AND x.TruckModelId = z.TruckModelId
                           JOIN CONTACT AS t ON z.TruckManufacturerId = t.ContactId
                           LEFT JOIN TRUCK_PURCHASE As u ON u.TruckId = x.CamionId
                           LEFT JOIN CONTACT AS v ON v.ContactId = u.ContactId
                           LEFT JOIN CONTACT_TYPE as w ON w.ContactTypeId = v.ContactTypeId
    ;
    GO

    Comme ça problème réglé.

    Ensuite Eloquent est un ORM qui offre une interface pour faciliter le développeurs, mais pas forcement le DBA.

    Du coup, il y a un autre mécanisme pour attaquer la base de données.
    C'est Database qui est en fait un Dbal : https://laravel.com/docs/5.8/database


    Donc vous pourriez ne pas déclarer vos vue au niveau model, mais avoir accès quand même à vos vues.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $camion = DB::select('select * from dbo.CAMION_LOCALISATION_V');
    De plus gràce à Database, on peut si on veux directement faire des requêtes PDO (assez méconnu de Laravel, car plus documenté depuis les versions 4 )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     
    $pdo = DB::getPdo()
     
    $sql = 'select * from dbo.CAMION_LOCALISATION_V';
     
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
     
    $r = $stmt->fetchAll(PDO::FETCH_OBJ);
     
    dd($r);
    J'espère que cela vous ouvre des pistes.

  7. #7
    Membre éclairé Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Par défaut
    Merci énormment MaitrePylos

    Je ne mettrai pas de id dans les vues de SQL Server car ce n'est pas la façon de procéder avec des Vues SQL. Par contre puisque je ne ferai pas de migrations, je n'ai pas besoin de me casser la tête. Avec un BD::insert, j'ai fait un insert dans ma base de données en passant par la Vues SQL Server et ça très bien fonctionné. Il reste à rafiner un peut le DB::insert pour simplifier un peu les choses. Je vais aussi essayer avec votre façon avec PDO.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Route::get('/', function () {
        $VIN = 'HN543K991632';
        $DateMfg = '2012-05-18';
        $Manufacturer = 'Freightliner';
        $Model = 'Cascadia';
        $Seller = 'Globocam Boucherville';
        $WheelBase = 240;
        $Color = 'White';
        DB::insert
        ('INSERT INTO CAMION_LOCALISATION_V (VIN, DateMfg, Manufacturer, Model, Seller, WheelBase, Color)
        VALUES (:VIN, :DateMfg, :Manufacturer, :Model, :Seller, :WheelBase, :Color)',
            ['VIN'=>$VIN, 'DateMfg=>DateMfg', 'Manufacturer'=>$Manufacturer, 'Model'=>Model
         , 'Seller'=>$Seller, 'WheelBase'=>$WheelBase, 'Color'=>$Color]);
        });

  8. #8
    Membre éclairé Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Par défaut Abandon Laravel
    Dans le fond puisque ma base de données est entièrement développée et fonctionnelle. Je trouve que c'est trop compliqué utiliser Laravel. Je ne comprend rien et les explications sur le Site de Laravel sont trop sommaires pour quelqu'un qui n'a jamais utiliser un Framework MVC. Je pense qu'il est plus simple de faire comme j'ai toujours fait et utiliser Notepad pour écrire tout mon code PHP pour mon site Web.

  9. #9
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    C'est dommage car Laravel est un des framework assez simple à prendre en main, après oui il faut un certain temps d'adaptation.
    Sinon, tu peux voir du côté de Yii, j'ai des très bon retour de courbe d'apprentissage.

  10. #10
    Membre éclairé Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Par défaut Bonjour MaitrePylos
    Bonjour MaitrePylos

    En fait j'ai réussi à faire un insertion dans la vue de SQL Server et d'afficher tous les enregistrements des tables correspondantes en passant aussi par la vue SQL Server avec Eloquent. Il me reste les Updates et les Deletes à mettre en oeuvre. Est-ce que je peux mettre ici le code de mon modèle, le Controller, la route et les 3 views et vous pourier me dire si la façon que je procède est correcte ou si je pourrais simplifier les choses un peu... Ça m'aiderait énormément car j'ai plusieurs vus de SQL Server à utiliser dans Laravel et si je peux simplifier un peu ça va être plus rapide pour mettre le tout en oeuvre. J'ai ajouté " public $timestamps = false;" dans le modèle... On ne s'occupe pas des migrations car je ne ferai pas de migrations...


    Citation Envoyé par MaitrePylos Voir le message
    C'est dommage car Laravel est un des framework assez simple à prendre en main, après oui il faut un certain temps d'adaptation.
    Sinon, tu peux voir du côté de Yii, j'ai des très bon retour de courbe d'apprentissage.

  11. #11
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    mettez sous forme de zip

  12. #12
    Membre éclairé Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Par défaut Merci MaitrePylos
    Citation Envoyé par MaitrePylos Voir le message
    mettez sous forme de zip
    La mise en page des views sont catastrophiques car j'ai simplement bridé un peu welcome.php pour faire les tests, je m'attarde pour l'instant à Laravel et SQL Server. J'ai mis le propriétaire de tous les fichiers du zip à Everyone. Je n'ai pas encore développé les Updates et les Deletes car j'essaie différentes façon de développer le Site Web alors je regarde à fond CSS et Bootstrap 4. Je fait quelques petites retouches personnelles à l'intérieur de Bootstrap 4 alors j'ai rajouté un bouton xs puisqu'il n'existe pas dans la version 4 et les boutons sm sont trop gros pour une base de données donc pas de mise à jour future de Bootstrap 4 pour mon site WEB à moins de refaire les petits hacking je fais présentement. B Merci pour l'aide MaitrePylos

    Pièce jointe 474672


    C'est plus jolie avec des petits boutons

    Pièce jointe 474668

  13. #13
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    C'est bien parti, maintenant cela manque de cohérence , surtout au niveau des conventions de nommages, cela agresse toutes ces majuscules.
    le seul truc qui m'embête (en dehors des majuscules), ce sont de petite subtilité comme le nom des routes :

    ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Route::resource('CAMION_LOCALISATION_V', 'CAMION_LOCALISATION_VController');
    devrais être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Route::resource('CAMION_LOCALISATION_V', 'CAMION_LOCALISATION_VController')->name('camion_v');
    et dans la vue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <form method="post" action="{{ route('camion_v') }}">
    Comme ceci, cela sera toujours bon.

  14. #14
    Membre éclairé Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Par défaut
    Ohhhhh merci beaucoup MaitrePylos ça fait plus jolie et plus fonctionnel effectivement, c'est exactement à ce niveau que je m'étais égaré quelque peu car je débute avec Laravel et bien que je lise les instructions sur le site de Laravel, tout n'est pas très clair pour un débutant avec un Framework. Et bien que YouTube regorge de tutoriaux pour Laravel, ils ne sont pas adaptés à l'usage que je fais avec les vues de SQL Server. Oui le nommage de mes vues dans SQL Server sont un peu particulier mais car il y a toujours un mais, pour la gestion à distance de la base de données, ce nommage des tables et des vues me permet d'écarter toute ambigüité à savoir où je suis dans la base de données car je vieillis et je me perds facilement LoL. Alors merci pour l'aide dans Laravel, je vais faire comme vous dites. Je vais d'abord développer les UPDATES et les DELETES comme j'ai fait avec les Vues, Modèles et Routes car ça me permet de savoir exactement où je suis par rapport à la base de données et ensuite j'appliquerai ce que vous m'avez enseigner. Ça sera ensuite plus rapide pour les autres views de SQL Server car elles seront presque toutes basées sur le même modèle dans Laravel. Donc si je comprend bien, il faut un modèle, un controller et une vue pour chaque view de SQL Server dans Laravel ? Ça fait beaucoup de répétition ?

  15. #15
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Sinon le meilleur tuto : https://laravel.sillo.org/laravel-5/

  16. #16
    Membre éclairé Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Par défaut
    Merci pour le lien, je le visite déjà mais il ne parle pas des vues dans la base de données :-(

    Et là je suis perdu à nouveau :-( Je dois faire les updates et les deletes sans ($id).


    QUOTE=MaitrePylos;10938740]Sinon le meilleur tuto : https://laravel.sillo.org/laravel-5/[/QUOTE]

  17. #17
    Membre éclairé Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Par défaut
    Si je mets ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Route::resource('CAMION_LOCALISATION_V', 'CAMION_LOCALISATION_VController')->name('camion_v');
    J'obtiens ça


    C:\WWW\laravel-mvc-demo-master\vendor\laravel\framework\src\Illuminate\Routing\PendingResourceRegistration.php
         * Set the route names for controller actions.
         *
         * @param  array|string  $names
         * @return \Illuminate\Routing\PendingResourceRegistration
         */
        public function names($names)
        {
            $this->options['names'] = $names;
     
            return $this;
        }
     
        /**
         * Set the route name for a controller action.
         *
         * @param  string  $method
         * @param  string  $name
         * @return \Illuminate\Routing\PendingResourceRegistration
         */
        public function name($method, $name)
        {
            $this->options['names'][$method] = $name;
     
            return $this;
        }
     
        /**
         * Override the route parameter names.
         *
         * @param  array|string  $parameters
         * @return \Illuminate\Routing\PendingResourceRegistration
         */
        public function parameters($parameters)
        {
            $this->options['parameters'] = $parameters;
     
            return $this;
        }
     
        /**
    Arguments
    "Too few arguments to function Illuminate\Routing\PendingResourceRegistration::name(), 1 passed in C:\WWW\laravel-mvc-demo-master\routes\web.php on line 24 and exactly 2 expected"
    
    Et aussi même si je mets dans le model public $incrementing = false;
    Je n'arrive pas à faire un update ou un delete, je n'arrive même pas à afficher une vue avec le edit/update dans le controler. En principe si j'appuis sur le bouton Edit dans la vue viewCAMION_LOCALISATION_V, je devrais être capable d'ouvrir une vue similaire à createCAMION_LOCALISATION_V....


    Citation Envoyé par MaitrePylos Voir le message
    C'est bien parti, maintenant cela manque de cohérence , surtout au niveau des conventions de nommages, cela agresse toutes ces majuscules.
    le seul truc qui m'embête (en dehors des majuscules), ce sont de petite subtilité comme le nom des routes :

    ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Route::resource('CAMION_LOCALISATION_V', 'CAMION_LOCALISATION_VController');
    devrais être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Route::resource('CAMION_LOCALISATION_V', 'CAMION_LOCALISATION_VController')->name('camion_v');
    et dans la vue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    <form method="post" action="{{ route('camion_v') }}">
    Comme ceci, cela sera toujours bon.

  18. #18
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Désolé, c'est de ma faute, je n'ai aps vu que c'était une ressource et non pas une route definie.

    donc ceci est incorrecte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Route::resource('CAMION_LOCALISATION_V', 'CAMION_LOCALISATION_VController')->name('camion_v');
    il faut comme tu avais mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Route::resource('CAMION_LOCALISATION_V', 'CAMION_LOCALISATION_VController');
    Pour savoir ce que cela crée comme route, tu peux faire en console

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    php artisan route:list

  19. #19
    Membre éclairé Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Par défaut
    Merci MaitrePylos... C'est tellement mal expliqué sur le site de Laravel.... Il va de soit que si quelqu'un connais déjà Symfony, il n'aura pas de misère mais si quelqu'un n'a jamais utilisé un Framework. J'utilisais Visual Basic 5 avec un mdb de Microsoft Access et on avait des modems de 56Kbit/sec dans le temps alors il ne fallait pas que les bases de données soient trop gourmandes ni les interfaces graphiques

    Là Laravel il nous montre ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $user = DB::table('users')->where('name', 'John')->first();
     
    echo $user->name;
    Ok ça fonctionne mais je ne veux pas entrer manuellement le 'name', je veux avoir le 'name' de la ligne sur laquelle je vais cliquer 'Edit' Et je ne veux pas uniquement le champ 'name' , je veux toutes les colonnes. Genre : 'Nom', 'Prenom', 'Telephone', etc..... Même en regardant les vidéos, il n'y a pas deux personnes qui font la même chose et je n'ai pas trouvé quelque chose pour les vues d'une base de données. Les sîtes des cours écrit, c'est la même chose puisque la majorité des gens on abandonné les vues des bases de données. Par contre moi, tout se règle sur SQL Server avec les Triggers alors en principe j'ai beaucoup moins de trafic sur le réseau et aussi plus sécuritaire... Après une semaine de lecture et de YouTube, je ne sais toujours pas comment faire les Updates dans mes vues SQL Server hahaha. C'est triste....

  20. #20
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bon, on va arrêter de s’énerver.
    Dans ta vue tu as bien un attribut unique ?

    Genre "vin" , il est pas unique lui, d'après ce que je vois dans l'image , il me semble qu'il ont des noms unique (vin17, vin01,vin02.....)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Lignes affectées dans SQL-View ODBC
    Par Ahmed91350 dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 22/12/2015, 18h19
  2. SQL dynamique dans une procédure stockée
    Par Amnesiak dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/07/2005, 15h17
  3. [date][javascript][sql] récupération dans un formulaire
    Par Shaud7 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/12/2004, 15h45
  4. Réponses: 4
    Dernier message: 13/04/2004, 19h12
  5. explo de BD : zone de saisie SQL invisible dans
    Par sebitor dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/03/2004, 17h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo