2013-11-19 6 views
1

Я новичок в мире laravel, и у меня есть один вопрос. Я не нашел ответа в документах или Google, так что ребята, пожалуйста, помогите мне.Eloquent ORM with Laravel

Что такое ORM эквивалент этих SQL запросов:

SELECT email FROM users WHERE username=test 

и

UPDATE users SET [email protected] WHERE username=test 

Мне нужно написать определенную функцию в моей модели класса User, или я могу сделать эти запросы только с объектом Do Класс модели пользователя?

Приветствия

ответ

1

Это будет выглядеть следующим образом:

$user = User::where('username','test')->first(); 

И обновить:

$user = User::where('username','test')->first(); 
$user->email = '[email protected]'; 
$user->save(); 
+1

или для обновления в одной строке: User :: где ('имя пользователя', 'тест') -> первая() -> update (array ('email' => '[email protected]')); – hayhorse

+1

Обратите внимание, что это эквивалентно 'select * from users', а не' select email from users'. Это типично для ORM, который следует за шаблоном проектирования Active Record и предполагает, что строка базы данных должна относиться к сущности бизнес-логики (в данном случае пользователи). Если вы действительно хотите выбрать только поле «email», вы можете захотеть использовать объект Query, который не является ORM, а просто инструментом для запросов к базе данных. – fideloper

2

Есть несколько способов сделать то, что вы хотите, не стесняйтесь выбрать более полезно для вас.

с методом-chainig

// For "SELECT email FROM users WHERE username=test" 
$email = User::where('username', 'test')->pluck('email'); 

// For "UPDATE users SET [email protected] WHERE username=test" 
User::where('username', 'test')->update(array('email'=>'[email protected]')); 

С объектами

// For "SELECT email FROM users WHERE username=test" 
$user = User::where('username', 'test')->first(); // Can be also an existing Eloquent object 
$email = $user->email; 

// For "UPDATE users SET [email protected] WHERE username=test" 
$user = User::where('username', 'test')->first(); // Can be also an existing Eloquent object 
$user->email = "[email protected]"; 
$user->save();