Maison  >  Questions et réponses  >  le corps du texte

Laravel - Les propriétés du modèle restent NULL dans la base de données même après la création

J'ai un modèle appelé Articles qui contient trois propriétés : 'title', 'subtitle' et 'body', il fonctionne parfaitement mais quatre colonnes sont ajoutées au modèle ('subtitle2', 'body2', 'subtitle3' et 'body3' '), les colonnes nouvellement ajoutées restent vides après la création de l'article. Il me manque clairement quelque chose, mais je n'arrive pas à comprendre quoi.

C'est la migration :

public function up()
{
    Schema::table('articles', function (Blueprint $table) {
        $table->string('subtitle2')->nullable()->default(null);
        $table->text('body2')->nullable()->default(null);
        $table->string('subtitle3')->nullable()->default(null);
        $table->text('body3')->nullable()->default(null);
        
    });
}

Après la migration, j'ai édité app/Http/Models/Article.php et cela ressemble à ceci :

protected $fillable = [
    'title',
    'subtitle',
    'body',
    'subtitle2',
    'body2',
    'subtitle3',
    'body3',

];

Ceci est mon application/Http/Livewire/CreateArticle.php

class CreateArticle extends Component
{
use WithFileUploads;

public $title;
public $subtitle;
public $body;
public $category;

public $subtitle2;
public $body2;

public $subtitle3;
public $body3;

public $temporary_images;
public $images = [];

public $article;
    
    
    public function store()
    {
        $this->validate();

        
        $this->article = Category::find($this->category)->articles()->create($this->validate());
        
        $this->article->user()->associate(Auth::user());
        $this->article->save();
        
        if(count($this->images)){
            foreach($this->images as $image){
                $newImage = $this->article->images()->create(['path'=>$image->store('images', 'public')]);
                
                dispatch(new ResizeImage($newImage->path, 600, 400));
            }
            
        }          
}

Finalement, j'ai ajouté ces lignes au formulaire :

{{-- INSERT SUBTITLE 2 --}}
    
    <div class="mb-3">
        <label for="subtitle2" class="form-label">第二段副标题</label>
        <input type="text" wire:model="subtitle2" class="form-control" id="subtitle2">
       
    </div>
    
    
    {{-- INSERT PARAGRAPH 2 --}}
    
    <div class="mb-3">
        <label for="body2" class="form-label">第二段</label><br>
        <textarea class="form-control" wire:model="body2" id="body2" cols="30" rows="3"></textarea>
    </div>
    
    
    {{-- INSERT SUBTITLE 3 --}}
    
    <div class="mb-3">
        <label for="subtitle3" class="form-label">第三段副标题</label>
        <input type="text" wire:model="subtitle3" class="form-control" id="subtitle3">
        
    </div>
    
    
    {{-- INSERT PARAGRAPH 3 --}}
    
    <div class="mb-3">
        <label for="body3" class="form-label">第三段</label><br>
        <textarea class="form-control" wire:model="body3" id="body3" cols="30" rows="3"></textarea>
    </div>

dd($this); renvoie le contenu suivant

Tinker affiche toutes les colonnes

P粉015402013P粉015402013260 Il y a quelques jours323

répondre à tous(2)je répondrai

  • P粉342101652

    P粉3421016522024-02-26 15:22:21

    Supposons que l'image dd();que vous fournissez soit à jour. Je vois que la nouvelle colonne n'existe pas dans la base de données. ('subtitle2', 'body2', 'subtitle3' et 'body3') Tous ces éléments ne sont pas disponibles dans la liste. Je pense donc que vous avez oublié d'exécuter la commande de migration

    php artisan migrate

    répondre
    0
  • P粉864872812

    P粉8648728122024-02-26 11:14:31

    Vous devez préciser

    protected $rules

    peut être utilisé

    $this->validate()

    répondre
    0
  • Annulerrépondre