2017-02-28 126 views
0

在数据库更新,我尝试验证我的投入,但每次我收到此错误信息(点击提交按钮):Laravel:PDOException在Connection.php行319:SQLSTATE [42S02]

PDOException在Connection.php行319:SQLSTATE [42S02]:基表 或视图中未发现的1146表 'app_db.user_id' 不存在

没有验证我的更新工作于user_details表。

UserDetailsController.php

<?php 

namespace App\Http\Controllers; 

use Session; 
use App\UserDetails; 
use Illuminate\Http\Request; 
use Illuminate\Support\Facades\Input; 
use Illuminate\Support\Facades\Redirect; 


class UserDetailsController extends Controller 
{ 
    public function index() 
    { 
     $details = UserDetails::all()->where('user_id', \Auth::user()->id); 
     return \View::make('pages.personal_datas') 
     ->with('details', $details); 
    } 

    public function update() 
    { 

     $details = UserDetails::where('user_id', \Auth::user()->id)->first(); 
     $validator = UserDetails::validate(Input::all()); 
     if($validator->fails()) 
     { 
      $messages = $validator->messages(); 

      return redirect()->action('[email protected]') 
      ->withErrors($validator); 
     } 
     else 
     { 
      $details->email = Input::get('email'); 
      $details->phone = Input::get('phone');   
      $details->country = Input::get('country'); 
      $details->city = Input::get('city'); 
      $details->address = Input::get('address'); 
      $details->save(); 

      Session::flash('message', 'Successfully updated!'); 

      return redirect()->action('[email protected]'); 
     } 
    } 
} 

UserDetails.php

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 
use Illuminate\Support\Facades\Validator; 

class UserDetails extends Model 
{ 
    public $timestamps = false; 
    protected $guarded = []; 
    protected $primaryKey = 'user_id'; 
    protected $table = 'user_details'; 

    public static $rules = array(
      'email' => 'email|unique:user_id|required', 
      'phone' => 'min:11|required', 
      'country' => 'min:4|required', 
      'city' => 'min:2|required', 
      'address' => 'min:4|required', 
    ); 

    public static function validate($data) 
    { 
      return Validator::make($data, static::$rules); 
    } 
} 

UPDATE Database structure

+2

错误消息看起来很清晰,与您的代码无关。数据库模式是什么样的? – jeroen

+0

对不起,忘了吧。更新。 – danielori

回答

0

您的问题与您的验证Ø F中的用户电子邮件

unique:user_id - >unique:user_details, user_id应该是正确的规则格式

全规则将改为:'email' => 'email|unique:user_details,user_id|required'

你原来的验证规则试图查询user_id表,它不存在。

+0

真正的绅士!谢谢!现在我明白了,它的工作原理! – danielori

相关问题