2017-07-01 18 views
0

MySQLデータベースを動的に使用して前のテーブルにカラムを追加しましたが、フォームを入力してローカルサーバのデータベースに送ります:MySQLデータベースを動的に使用して前のテーブルにカラムを追加しました

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'forge. posts' doesn't exist (SQL: select count(*) as aggregate from ` posts` where ` slug ` = hihello) 

'ポスト' テーブルに 'スラグ' と呼ばれる新しい列を挿入するための移行テーブル 'ポスト'

<?php 

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

class CreatePostsTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('posts', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('title'); 
      $table->text('body'); 
      $table->timestamps(); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::drop('posts'); 
    } 
} 

の私のコード

<?php 

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

class AddSlugToUsers extends Migration 
{ 



    public function up(){ 

     Schema::table('posts',function(Blueprint $table){ 
     $table->string('slug')->unique()->after('title'); 

     }); 

    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down(){ 

    Schema::table('posts',function(Blueprint $table){ 
    $table->dropColumn('slug'); 
     }); 


    } 
    } 

'slug'列は正常に挿入されましたが、問題はデータベースにフォームをポストすることです。

<?php 


namespace App\Http\Controllers; 
      use Illuminate\Http\Request; 
      use App\Http\Requests; 
      use App\Http\Controllers\Controller; 
      use App\Post; 
     use Session; 

      class PostController extends Controller 
      { 
     /** 
     * Display a listing of the resource. 
     * 
     * @return \Illuminate\Http\Response 
     */ 
      public function index() 
      { 
      $posts = Post::orderBy('id', 'desc')->paginate(10); 
      return view('posts.index')->withPosts($posts); 
      } 

     /** 
     * Show the form for creating a new resource. 
     * 
     * @return \Illuminate\Http\Response 
     */ 
      public function create() 
      { 
      return view('posts.create'); 
      } 

     /** 
     * Store a newly created resource in storage. 
     * 
     * @param \Illuminate\Http\Request $request 
     * @return \Illuminate\Http\Response 
     */ 
      public function store(Request $request) 
      { 
      // validate the data 
      $this->validate($request, array(
        'title' => 'required|max:255', 
        'slug' 
        =>'required|min:5|alpha_dash|min:5|max:255|unique: 
      posts, slug ', 
        'body' => 'required')); 

      // store in the database 
      $post = new Post; 

      $post->title = $request->title; 
      $post->slug = $request->title; 
      $post->body = $request->body; 

      $post->save(); 

      Session::flash('success', 'The blog post was successfully 
      save!'); 

      return redirect()->route('posts.show', $post->id); 
      } 

     /** 
     * Display the specified resource. 
     * 
     * @param int $id 
     * @return \Illuminate\Http\Response 
     */ 
      public function show($id) 
      { 
      $post = Post::find($id); 
      return view('posts.show')->withPost($post); 
      } 

     /** 
     * Show the form for editing the specified resource. 
     * 
     * @param int $id 
     * @return \Illuminate\Http\Response 
     */ 
      public function edit($id) 
      { 
      // find the post in the database and save as a var 
      $post = Post::find($id); 
      // return the view and pass in the var we previously created 
      return view('posts.edit')->withPost($post); 
      } 

     /** 
     * Update the specified resource in storage. 
     * 
     * @param \Illuminate\Http\Request $request 
     * @param int $id 
     * @return \Illuminate\Http\Response 
     */ 
      public function update(Request $request, $id) 
      { 
      // Validate the data 
      $this->validate($request, array(
        'title' => 'required|max:255', 

      'slug'=>'required|alpha_dash|min:5|max:255|unique:posts,slug', 
        'body' => 'required' 
       )); 
      // Save the data to the database 
      $post = Post::find($id); 

      $post->title = $request->input('title'); 
      $post->title=$request->input('slug'); 
      $post->body = $request->input('body'); 

      $post->save(); 

      // set flash data with success message 
      Session::flash('success', 'This post was successfully saved.'); 

      // redirect with flash data to posts.show 
      return redirect()->route('posts.show', $post->id); 
      } 

     /** 
     * Remove the specified resource from storage. 
     * 
     * @param int $id 
     * @return \Illuminate\Http\Response 
     */ 
      public function destroy($id) 
      { 
      $post = Post::find($id); 

      $post->delete(); 
      //for sesssion 
      Session::flash('success', 'The post was successfully deleted.'); 
      return redirect()->route('posts.index'); 
       } 
      } 
+0

同じデータベースを使用しましたか?そのためには移行を使用する方がよいでしょう。 – Maraboc

+0

エラーはあまり明確ではありません。まず、データベース名とユーザー名のデフォルトの文字列であるForgeがデータベース名とユーザー名とパスワードが正しいことを確認してください。 –

+0

すべては正しいが、私はしませんでした。まだ解決策を見つける –

答えて

0

'鍛造物。これは、テーブル名の投稿の前にスペースがあるように見えます。モデルがあるかどうかチェックしました

+0

「スペースの問題」はありません。ポストテーブルに列を追加する前にポストテーブルが機能していることも参照してください。 –

関連する問題