我是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
。
我很感激对此有任何有用的解释。
谢谢。
答案 0 :(得分:1)
protected $fillable = ['imagePath','title','description','price'];
这意味着,此数组中给出的字段名称只能从我们这边插入数据库。比如,只允许填写我们的价值。
明确,参考文件。
$ fillable属性表示您希望可批量分配的属性数组
和
$ guarded属性表示您不希望成批分配的属性数组