Laravel:在模型表中添加新行

时间:2014-04-07 22:54:13

标签: php laravel laravel-4 form-submit

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

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

2 个答案:

答案 0 :(得分: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;
    }
}

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

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

还有其他方法,例如:

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

或者这个:

User::create(Input::except('_token'));

这要求您在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();

}

由于您仍然是Laravel的新用户,您可以使用第一个示例并阅读Mass Assignment,然后根据需要使用第二个示例。

更新

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

$username = Input::get($username);

因此,您可以使用以下数据:

$user = new User;
$user->usaername = $username;

或直接您可以使用:

$user->email = Input::get($email);
$user->save();

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

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

然后在您的控制器中,您必须创建方法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();
    }
}

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

Form::open(array('route' => 'user.add'))

正确阅读the documentation,您可以轻松完成。

答案 1 :(得分:-1)

就我而言,我没有填写外键值。