Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 4 » Ошибка при записи в БД. » 03.02.2014 21:34:27

grachov пишет:

В валидаторе unique указана таблица users:

'email' => 'required|email|unique:users',

Спасибо, добрый человек.

#2 Re: Laravel 4 » Ошибка при записи в БД. » 03.02.2014 13:05:44

Rules в модели User

class User extends Eloquent implements UserInterface, RemindableInterface {

	public static $rules = array(
   'nickname'=>'required|alpha|min:2',
   'email'=>'required|email|unique:users',
   'password'=>'required|alpha_num|between:6,12|confirmed',
   'password_confirmation'=>'required|alpha_num|between:6,12'
   );

	/**
	 * The database table used by the model.
	 *
	 * @var string
	 */
	protected $table = 'user';

и т.д.

#3 Re: Laravel 4 » Ошибка при записи в БД. » 03.02.2014 12:37:50

Забыл, в контроллере оставляю просто:

$user = new User;
				$user->nickname = Input::get('nickname');
				$user->email = Input::get('email');
				$user->password = Hash::make(Input::get('password'));
				$user->save();
				return Redirect::to('user/create')->with('message', 'Thanks for registering!');

Все - ок.

#4 Re: Laravel 4 » Ошибка при записи в БД. » 03.02.2014 12:20:43

Validator в контроллере:

public function createUser(){

		$validator = Validator::make(Input::all(), User::$rules);
 
		
		
		if ($validator->passes()) {
				$user = new User;
				$user->nickname = Input::get('nickname');
				$user->email = Input::get('email');
				$user->password = Hash::make(Input::get('password'));
				$user->save();
				return Redirect::to('user/create')->with('message', 'Thanks for registering!');
		} else {
				return Redirect::to('/')->with('message', 'Error!');
		}
	}

В модели User :

protected $table = 'user';

Если убрать:

$validator = Validator::make(Input::all(), User::$rules);

и

if ($validator->passes()) {
			$user = new User;
				$user->nickname = Input::get('nickname');
				$user->email = Input::get('email');
				$user->password = Hash::make(Input::get('password'));
				$user->save();
				return Redirect::to('user/create')->with('message', 'Thanks for registering!');	
		} else {
				return Redirect::to('/')->with('message', 'Error!');
		}

Все работает нормально, пишеться в таблицу 'user'.

Может в Lavarel где то захардкодили таблицу 'users'?

#5 Laravel 4 » Ошибка при записи в БД. » 02.02.2014 21:49:29

Romix
Ответов: 6

Здравствуйте.
Везде прописана таблица - user.
В контроллере настроил Validator.
При записи в БД, получаю ошибку, нет таблицы - my_db.users.

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'my_db.users' doesn't exist (SQL: select count(*) as aggregate from `users` where `email` = qqq@qqq.tt)

Если убрать Validator, все - ок.

Что делать?

ЗЫ Все работает под Windows.

Подвал раздела