【问题标题】:What use with this code, " protected $attributes = []; "?这段代码“protected $attributes = [];”有什么用?
【发布时间】:2019-05-19 12:15:55
【问题描述】:

我是 laravel 的初学者。我从 laravel 的网站https://laravel.com/docs/5.8/eloquent#default-attribute-values 上阅读了一些信息,上面说我们可以在模型中设置一些默认属性。详细内容:

默认属性值 如果您想为模型的某些属性定义默认值,您可以在模型上定义 $attributes 属性:

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
    /**
     * The model's default values for attributes.
     * @var array
     */
    protected $attributes = [
        'delayed' => false,
    ];
}

现在,我在 laravel 中创建了 CRUD 函数。并在数据库中设置一些示例/默认值,它是 "id"=1,"element1"="ABC","element2"="abc"。 最后,我在显示表中一无所获。

Database Table:
...
public function up()
  {
    Schema::create('cruds', function (Blueprint $table) {
      $table->bigIncrements('id');
      $table->string('element1');
      $table->string('element2');
  });
}
...
Model:CRUD
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class crud extends Model
{
    protected $timestramp = false;
    protected $primarykey = "id";
    protected $attributes =[
        'id'        => 1,
        'element1'  => "ABC",
        'element2'  => "abc",
    ];
}
View.blade.php
...
<tbody>
@foreach ($CRUDitems as $item)
  <tr>
    <th scope="row">{{ ($item->$id) }}</th>
    <td>{{ ($item->$element1) }}</td>
    <td>{{ ($item->$element2) }}</td>
  </tr>
@endforeach
</tbody>
...
CRUDController.php
...
public function index()
  {
    $CRUDitems = crud::all();
    return view('CRUD.viewTable',compact('CRUDitems')) ;
  }
...
web.php
<?php
Route::resource('/CRUD', 'CRUDController');

我要如何设置一些默认值? 谢谢!

【问题讨论】:

  • 您似乎正在尝试在实际保存任何内容之前查询您的表?
  • 您是否保存了任何数据?您必须从模型中制作至少一个对象并保存。
  • 我的数据库表是空的,我想在 laravel 中设置一些示例/默认数据,然后在界面中使用。

标签: php laravel


【解决方案1】:

你必须从你的模型中制作一个对象。为此(出于测试目的),让我们添加这样的路由:

Route::get('test', 'CRUDController@test');

然后在您的控制器中添加一个 test 方法,如下所示:

public function test(){
    $crud = new Crud();
    $crud->save();
}

您也可以使用tinker 来测试您的代码。

在命令/控制台中输入php artisan tinker,然后为您的模型创建一个新实例:

$crud = new App\Crud;
$crud->save();

【讨论】:

  • 我的路线使用“资源”类型,我该如何编辑?而且,制作模型的新实例意味着将这些代码放入“crud”模型中,不是吗?但是,它会导致错误。
  • 您可以编辑您的路由文件并添加我提到的行,而无需更改您的默认资源路由。我认为最好在控制器中进行工作。该模型对数据库进行基本工作。
猜你喜欢
  • 2010-11-25
  • 2010-11-07
  • 2018-09-01
  • 2011-04-13
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多