带有 Eloquent 的 Laravel 不会在数据库中保存模型属性

kie*_*sky 6 php database laravel eloquent

我正在使用 php laravel 框架构建一个网络应用程序。当我将模型保存在数据库中时,它会插入但不保存模型属性。我不知道如何修复,因为 laravel 日志没有显示任何错误。任何的想法?

有模型:

/**
 * The database table used by the model.
 *
 * @var string
 */
protected $table = 'test';
//  protected $fillable = array('name', 'surname', 'mobile', 'phone', 'mail', 'adress');

// Model properties
private $name;
private $surname;
private $mobile;
private $phone;
private $mail;
private $adress;

// Model constructor
function __construct($name, $surname, $mobile, $phone, $mail, $adress) {
    $this->name = $name;
    $this->surname = $surname;
    $this->mobile = $mobile;
    $this->phone = $phone;
    $this->mail = $mail;
    $this->adress = $adress;
}
Run Code Online (Sandbox Code Playgroud)

还有创建 User 对象并将其保存到数据库的 php 代码

<?php

// Create an object using model's constructor
$user = new User('John', 'Doe', 685412578, 9354784125, 'j@doe.com', 'Portland');

// Show some properties
echo '<p>'.$user->getName().'</p>';
echo '<p>'.$user->getSurname().'</p>';

// Saving model on database
$user->save();

?>
Run Code Online (Sandbox Code Playgroud)

当我执行 php 代码在屏幕上显示模型属性并进行插入但不保存属性时。如果有人可以帮助我,那就太好了:)


有解决方案(如果有人有同样的问题或类似的问题)

模型:

    protected $table = 'test';

    // Fields on databse to save model properties
    protected $fillable = array('name', 'surname', 'mobile', 'phone', 'mail', 'adress');

    // Model properties
    private $name;
    private $surname;
    private $mobile;
    private $phone;
    private $mail;
    private $adress;
Run Code Online (Sandbox Code Playgroud)

和 php 代码:

 <?php

        // Create an object
                    $user = User::create(array(
                        'name'=>'John', 
                        'surname'=>'Doe', 
                        'mobile'=>685412578, 
                        'phone'=>9354784125, 
                        'mail'=>'j@doe.com', 
                        'adress'=>'Portland'
                        ));

        // Show some properties
        echo '<p>'.$user->name.'</p>';
        echo '<p>'.$user->surname.'</p>';

        // Saving model on database
        $user->save();

    ?>
Run Code Online (Sandbox Code Playgroud)

low*_*nds 2

如http://laravel.com/docs/eloquent#mass-assignment中所述,您需要$fillable为所有想要批量分配的属性设置属性。因此,您应该取消注释以 开头的行protected $fillable = ...