Laravel:在模型表中添加新行

Tar*_*fih 2 php form-submit laravel laravel-4

我定义了一个用户模型,我正在尝试使用表单在我的数据库中添加一个新用户,最好和最快的方法是什么,我已经阅读了一些关于模型表单绑定但我认为它只是用于更新不是为了添加新行.

我是Laravel的新手,找不到一些好的教程,我必须认识到Laravel文档真的很差,所以欢迎任何链接到一些好的和解释良好的教程.谢谢

The*_*pha 9

假设你有一个默认带来的User模型(app/models/User.php)Laravel,它可能如下所示:

use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;

class User extends Eloquent implements UserInterface, RemindableInterface {

    protected $table = 'users';
    protected $hidden = array('password');

    public function getAuthIdentifier()
    {
        return $this->getKey();
    }

    public function getAuthPassword()
    {
        return $this->password;
    }

    public function getReminderEmail()
    {
        return $this->email;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,从控制器(基本上)你可以使用像这样的东西:

$user = new user;
$user->usaername = 'Me';
$user->email = 'me@yahoo.com';
// add more fields (all fields that users table contains without id)
$user->save();
Run Code Online (Sandbox Code Playgroud)

还有其他方法,例如:

$userData = array('username' => 'Me', 'email' => 'me@yahoo.com');
User::create($userData);
Run Code Online (Sandbox Code Playgroud)

或这个:

User::create(Input::except('_token'));
Run Code Online (Sandbox Code Playgroud)

这要求您在User模型中使用如下属性:

class User extends Eloquent implements UserInterface, RemindableInterface {

    protected $fillable = array('username', 'email');

    // Or this,  (Read the documentation first before you use it/mass assignment)
    protected $guarded = array();

}
Run Code Online (Sandbox Code Playgroud)

既然,您仍然是新手,Laravel您可以使用第一个示例并阅读有关批量分配的内容,然后您可以根据需要使用第二个示例.

更新:

在您的控制器中,您可以使用Input::get('formfieldname')获取提交的数据,例如:

$username = Input::get($username);
Run Code Online (Sandbox Code Playgroud)

所以,你可以使用这样的数据:

$user = new User;
$user->usaername = $username;
Run Code Online (Sandbox Code Playgroud)

或直接你可以使用:

$user->email = Input::get($email);
$user->save();
Run Code Online (Sandbox Code Playgroud)

在表单中,您必须设置form action,您将在何处提交表单,在这种情况下,您必须声明路由,例如:

Route::post('user/add', array('as' => 'user.add', 'uses' => 'UserController@addUser'));
Run Code Online (Sandbox Code Playgroud)

然后在你的控制器中你必须创建方法addUser,如下所示:

class UserController extends addUser {

    // other methods

    public function addUser()
    {
        $user = new user;
        $user->username = Input::get('username');
        $user->email = Input::get($email);
        $user->save();
    }
}
Run Code Online (Sandbox Code Playgroud)

在您的表单中,您可以使用此:

Form::open(array('route' => 'user.add'))
Run Code Online (Sandbox Code Playgroud)

正确阅读文档,您可以轻松完成.