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 :

Laravel factory de champ qui n'existe pas


Sujet :

Laravel PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 586
    Par défaut Laravel factory de champ qui n'existe pas
    Bonjour à tous,

    J'ai encore un problème avec laravel.
    J'utilise des factory pour mes tests
    VendorFactory.php
    Code : 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
    <?php
     
    use Faker\Generator as Faker;
    use App\Models\Vendor;
     
    $factory->define(Vendor::class, function (Faker $faker) {
        return [
            'id_lang' => 'fr',
            'id_currency' => 'EUR',
            'name' => 'phpunit test name vendor',
            'id_site' => '1',
            'ref' => '1234',
            'file_logo' => '',
            'description' => 'description phpunit vendor'
        ];
    });
    Et le modèle
    Code : 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
    <?php
     
    namespace App\Models;
     
    use Illuminate\Database\Eloquent\Model;
     
    /**
     * App\Models\Vendor.
     *
     * @property int                 $id_vendor
     * @property int|null            $id_user
     * @property string              $id_lang
     * @property string              $id_currency
     * @property string              $id_site
     * @property string              $name
     * @property string              $ref
     * @property string              $description
     * @property string|null         $file_logo
     * @property int                 $status
     * @property \Carbon\Carbon|null $created_at
     * @property \Carbon\Carbon|null $updated_at
     *
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor whereCreatedAt($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor whereDescription($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor whereFileLogo($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor whereIdCurrency($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor whereIdLang($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor whereIdSite($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor whereIdUser($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor whereIdVendor($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor whereName($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor whereRef($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor whereStatus($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor whereUpdatedAt($value)
     * @mixin \Eloquent
     *
     * @property string|null $country_code
     * @property string|null $category
     *
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor whereCategory($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor whereCountryCode($value)
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor newModelQuery()
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor newQuery()
     * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Vendor query()
     */
    class Vendor extends Model
    {
        const STATUS_INACTIVE = 0;
        const STATUS_ACTIVE = 1;
     
        protected $table = 'vendor';
     
        protected $primaryKey = 'id_vendor';
     
        protected $fillable = [
            'id_user',
            'id_lang',
            'id_currency',
            'id_site',
            'name',
            'ref',
            'description',
        ];
    }
    Dans ma classe de test j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            // init  factory for database
            $user = factory(User::class)->create();
     
            $this->vendor = factory(Vendor::class)->create([
                $user->id_user
            ]);
            die;
    J'ai comme retour en console avec phpunit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Illuminate\Database\QueryException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'updated_at' in 'field list' (SQL: insert into `VC_vendor` (`id_lang`, `id_currency`, `name`, `id_site`, `ref`, `file_logo`, `description`, `id_user`, `updated_at`, `created_at`) values (fr, EUR, phpunit test name vendor, 1, 1234, , description phpunit vendor, 60, 2019-04-25 13:36:08, 2019-04-25 13:36:08))
    Le problème c'est que je peux faire un create
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $vendor = Vendor::create([
                        'id_user' => $user->id_user,
                        'id_lang' => $r_vendor['id_lang'],
                        'id_currency' => $r_vendor['id_currency'],
                        'id_site' => $r_vendor['id_site'],
                        'name' => $r_vendor['name'],
                        'ref' => $r_vendor['ref'],
                        'description' => (isset($r_vendor['description'])) ? $r_vendor['description'] : '',
                    ]);
    Mais avec le factory il ne supporte pas le create et update comment faire en sorte qui les ignores?

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    bonjour,
    il est possible de désactiver ces attributs updated_at et created_at:
    Code : 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
     
    class Vendor extends Model
    {
       /**
         * The name of the "created at" column.
         *
         * @var string
         */
        const CREATED_AT = null;
        /**
         * The name of the "updated at" column.
         *
         * @var string
         */
        const UPDATED_AT = null;
     
    }
    lien github de la classe Model https://github.com/laravel/framework...uent/Model.php

  3. #3
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 586
    Par défaut
    Merci pour ta réponse,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Select un champ qui n'existe pas dans ma table
    Par Clermand dans le forum SQL
    Réponses: 1
    Dernier message: 08/04/2014, 16h21
  2. la selection d'un champ qui n'existe pas dans la table
    Par belaggoun2000 dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/07/2010, 12h41
  3. bizarre : un champ qui existe et qui n'existe pas !
    Par Vincent Heude dans le forum 4D
    Réponses: 1
    Dernier message: 14/06/2010, 19h55
  4. Réponses: 8
    Dernier message: 26/01/2006, 14h47
  5. Select qui n'existe pas
    Par daijoubu dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/01/2006, 18h34

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