Laravel 5.3模型中的受保护变量是否构成构造函数

时间:2016-10-19 11:13:58

标签: php laravel-5 laravel-5.2

我是Laravel的新手,我注意到有些类似于Java,有些则不是。我想这是因为它使用了OOP风格。

我正在关注初学者的视频教程并遇到了protected修饰符(如果我是正确的)。

我最初在Java学习编程。以下是三个php文件定义。

protected $fillable类中的Product是否像Java中的constructor一样,要求您在创建类的实例之前提供值? (在这种情况下,产品类别)

ProductTableSeeder.php

<?php

use Illuminate\Database\Seeder;

class ProductTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {

        $product = new \App\Product([
            'imagePath' => 'someImagePathURL',
            'title' => 'Harry Potter',
            'description' => 'Super cool - at least as a child.',
            'price' => 10
        ]);
        $product->save();
    }
}

Product.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    protected $fillable = ['imagePath','title','description','price'];
}

create_products_table.php

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateProductsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->increments('id');
            $table->timestamps();
            $table->string('imagePath');
            $table->string('title');
            $table->text('description');
            $table->integer('price');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('products');
    }
}

我理解为$product = new \App\Product部分的行instantiation

我很感激对此有任何有用的解释。

谢谢。

1 个答案:

答案 0 :(得分:1)

protected $fillable = ['imagePath','title','description','price'];

这意味着,此数组中给出的字段名称只能从我们这边插入数据库。比如,只允许填写我们的价值。

明确,参考文件。

$ fillable属性表示您希望可批量分配的属性数组

$ guarded属性表示您不希望成批分配的属性数组

参考:https://laravel.com/docs/5.3/eloquent#mass-assignment