【问题标题】:php laravel Eloquent ORM relationsphp laravel 雄辩的 ORM 关系
【发布时间】:2018-08-06 13:32:43
【问题描述】:

我正在编写 php,对于当前项目,我正在使用 laravel 框架(使用 Eloquent ORM)。在这个项目中,我创建了两个表:用户和任务。我想在这些表之间创建一个“一对多”的关系。所以一个用户可以有很多任务。在 Tasks 类中,我创建了方法 owner():

public function owner() {
    return $this->belongsTo('App\Models\User', 'tasks_owner_foreign');
}

(key <i>tasks_owner_foreign</i> (column: owner) references on <i>users</i> (id))

但是当我用来获取用户名时

$task->owner()->name 

我得到了这个例外: 未定义属性:Illuminate\Database\Eloquent\Relations\BelongsTo::$name(查看:/path to file/tasks.blade.php)

如果我用过

$task->owner->name 

我得到了这个例外: 试图获取非对象的属性(查看:/path to file/tasks.blade.php)

可能是什么?或者是什么让我错了?

我觉得会很有用https://github.com/sergeymarchuk/project

【问题讨论】:

  • 试试$task-&gt;users['name']
  • Task-&gt;table_name['column_name']
  • 工作正常,但没有显示
  • 它不起作用,因为关系没有正确设置
  • 如何设置关系对?

标签: php laravel-5.3 laravel-eloquent


【解决方案1】:

在您的任务表迁移中没有名为 tasks_owner_foreign 的列。 Ur task table migrations

你改用owner

public function getowner() {
    return $this->belongsTo('App\Models\User', 'owner');
}

【讨论】:

  • 这不起作用,“tasks_owner_foreign”是外键,在运行 migrate “create_tasks_table”时自动创建。
猜你喜欢
  • 2014-06-22
  • 1970-01-01
  • 1970-01-01
  • 2016-02-26
  • 2016-08-27
  • 1970-01-01
  • 1970-01-01
  • 2015-03-14
  • 2018-11-28
相关资源
最近更新 更多