【问题标题】:Can't access object property in Laravel无法访问 Laravel 中的对象属性
【发布时间】:2017-03-15 22:42:34
【问题描述】:

我从昨天开始学习 Laravel,在获取对象的属性方面遇到了一些困难。

这是类(使用artisan 创建):

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Task extends Model
{
    public $description;
    public $completed;
    public $timestamps = false;

    public function isComplete()
    {
        return $this->completed;
    }
}

这就是问题所在:

>>> $tasks = App\Task::all();
=> Illuminate\Database\Eloquent\Collection {#654
     all: [
       App\Task {#652
         id: "1",
         description: "Learn Laravel",
         completed: "0",
       },
     ],
   }
>>> $tasks[0]->id
=> 1
>>> $tasks[0]->description
=> null

为什么我可以访问id,但不能访问description

【问题讨论】:

    标签: php laravel object laravel-5


    【解决方案1】:

    字段description 为空,因为您的模型中有同名的公共字段:

    public $description;
    

    只需删除它,您就可以使用模型数据库表中字段 description 的值。

    【讨论】:

    • 谢谢。我将它们设置为 protected
    • 这可行,但我建议为您的类字段使用唯一名称。
    【解决方案2】:

    你必须使你的模型属性如下

    protected $table = 'your table name';
    protected $primaryKey = 'id';
    protected $fillable = ['description','completed'];
    

    我希望这对你有用。

    【讨论】:

    • 好的,谢谢您的回答。但在这种情况下,我该如何保存对象? $task-&gt;save(); 会按预期工作吗?
    • 是的,亲爱的,它会为你工作。你为保存任务写了什么代码?
    • 这里是保存部分:$task = new Task; $task-&gt;description = request('taskName'); $task-&gt;completed = request('completed'); $task-&gt;save();
    • request('taskName') 是否返回值?如果是,那么将为您工作
    • 好的,谢谢。我试试看。
    猜你喜欢
    • 1970-01-01
    • 2016-11-19
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    相关资源
    最近更新 更多