Maison > Questions et réponses > le corps du texte
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粉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
P粉8648728122024-02-26 11:14:31
Vous devez préciser
protected $rules
peut être utilisé
$this->validate()