Laravel 5

Laravel probleme de table inexistante

Avatar de Akira
Akira
  1. Bonjour a tous, donc voila j'essai de faire passer mes champs input dans la base de donnée:

SQLSTATE[42S02]: Base table or view not found: 1146 La table 'k.themes' n'existe pas (SQL: insert into themes (style, description, image, updated_at, created_at) values (style, description, 5e1f91aaea13b497980c9e6d54f4d678.jpg, 2020-08-18 20:16:52, 2020-08-18 20:16:52))SQLSTATE[42S02]: Base table or view not found: 1146 La table 'k.themes' n'existe pas (SQL: insert into themes (style, description, image, updated_at, created_at) values (style, description, 5e1f91aaea13b497980c9e6d54f4d678.jpg, 2020-08-18 20:16:52, 2020-08-18 20:16:52))

  1. Laravel me trouve une table qui nexiste pas.
  • Controller:

public function create() { return view('theme.create');}

public function store(Request $request) {

$this->validate($request,[

'style' => 'min:5|max:100|string',

'description' => 'min:5|max:500|string',

'image' => 'binary|min:5|max:2000'

]);

$theme = new Theme([

'style'=> $request->style,

'description'=> $request->description,

'image'=> $request->image

]);

$theme->save();

return redirect (route('/'));

} }

  • Route:

Route::get('/home', 'HomeController@index')->name('home');

Route::get('/', function () {return view ('accueil');});

Route::resource('/theme', 'ThemeController');

  1. Je n'arrive pas a comprendre d'ou vien le probleme , meme si je pense que c'est peu etre la route. Pouvez vous m'aidez ?
Posté il y a 1 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Laravel attends un "s" à la fin du nom de ta table. C'est bien la table themeS ? Sinon tu doit rajouter protected $table = 'theme'; dans ton modele theme.

PS: essaie de bien utiliser la mise en page pour le code, parceque là on y comprends rien.

Posté il y a 1 mois
Avatar de Akira
Akira

Merci pour ton temp et ta réponse , mais Laravel souhaite avoir un tableaux. Je ne peux pas mettre juste le nom de ma table dans le model , sinon mes 3 colonne ne passe pas dans la table.

Je comprend pas pourquoi il me demande themeS alors que ma table c'est themE.

La prochaine fois je vais ajouter une photo pour que ça sois plus simple a lire.

Posté il y a 1 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Je ne comprends pas ce que tu veux dire. C'est une convention de laravel, il attends un S à la fin du nom des tables.

Peux-tu envoyer ton model qu'on comprenne.

Posté il y a 1 mois
Avatar de Akira
Akira

Je vous envoie ça une fois que j'ai trouver comment mettre une image ^^

Posté il y a 1 mois
Avatar de Akira
Akira
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Theme extends Model
{
    protected $fillable = [ 'style','description','image'];
}
Posté il y a 1 mois
Avatar de Akira
Akira


use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class Theme extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('theme', function(Blueprint $table){
            $table->increments('id');
            $table->string('style');
            $table->string('description');
            $table->binary('image')->nullable();;
            $table->timestamps();
    });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('theme');
    }
}
Posté il y a 1 mois
Avatar de Akira
Akira
@extends('layouts.app')

@section('content')

@if (Auth::guest()) 

     <div>
        <h1>Pour soumettre vos theme merci de vous authantifier</h1>
     </div>           
  
@else
           
<form class="" method="POST" action="{{ route ('theme.store')}}" enctype="multipart/form-data">
    {{ csrf_field( )}}
  
<div>
        <label>Sty</label>     
        <input  type="text" name="style" placeholder="style" value='style'>
   
</div>

    <label>Image</label>
    <input  type="file"  placeholder="image" name="image" value='image' >

    <label>Image</label>
    <input  type="textarea" placeholder="Avez vous une idée ..." name="description" value='description' required autofocus> </input>

    <button type="submit" name="soumettre">
        Soumettre
    </button>
 
</form>

@endif

@endsection

Posté il y a 1 mois
Avatar de Akira
Akira
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Theme;



class ThemeController extends Controller
{
    public function index()
    {
        return view('theme.index');
    }

    public function create()
    { 
        return view('theme.create');
    }

    public function store(Request $request)
    {
        $this->validate($request,[
            'style' => 'min:5|max:100|string',
            'description' => 'min:5|max:500|string',
            'image' => '|min:5|max:2000|sometimes'
        ]);

       $theme = new Theme([
           'style'=> $request->style,
           'description'=> $request->description,
           'image'=> $request->image
           
           ]);
           $theme->save();
           return redirect (route('/'));
    }
}
Posté il y a 1 mois
Avatar de Akira
Akira

Voila Je suis encore en recherche , Je ne comprend toujour pas mais , si d'ici la je ne trouve pas j'attendrais votre réponse.

Posté il y a 1 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Ben essaye de rajouter protected $table = 'theme'; dans le modele pour voir quand même. Je pense que c'est ça

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Theme extends Model
{
    protected $fillable = [ 'style','description','image'];
    protected $table = 'theme';
}
Posté il y a 1 mois
Avatar de Akira
Akira

merci

Posté il y a 1 mois
Avatar de CinquièmeDimension
CinquièmeDimension

N'hésite pas à passer le post en résolu

Posté il y a 1 mois

Vous ne pouvez pas répondre à ce sujet.