当前位置: 首页 > 知识库问答 >
问题:

Laravel雄辩的ORM关系命名约定

施永宁
2023-03-14
class Book extends Eloquent {

    public function author()
    {
        return $this->belongsTo('Author');
    }

}

$books = Book::all()
foreach ($books as $book) {
    echo $book->author->firstname;
}
    public function daauthor()
    {
        return $this->belongsTo('Author', 'author_id');
    }

}

$book = Book::find(55);
dd($book->daauthor);

有人能解释一下原因吗?

共有1个答案

朱啸
2023-03-14

方法belongsTo尝试确定链接到作者模型的属性。为了实现这一点,Laravel使用调用方的函数名。

因此,在您的代码中,Laravel看到了daauthor函数,并尝试使用books表中的属性daauthor_id来完成您的请求。由于books表没有此属性,因此失败。

通过在方法上设置$ForeignKey,可以覆盖默认行为:

public function daauthor()
{
    return $this->belongsTo('Author', 'author_id');
}
 类似资料:
  • 我正在编写php代码,对于当前的项目,我正在使用laravel框架(带有雄辩的ORM)。在这个项目中,我创建了两个表:用户和任务。我想在这些表之间创建一个“一对多”的关系。因此,一个用户可以有许多任务。在Tasks类中,我创建了方法所有者(): 但是当我以前得到用户名的时候 我得到这个异常:未定义的属性:illumb\Database\Eloquent\Relations\BelongsTo::$

  • 我有以下三个表格: 所以基本上这种关系就像: 用户有许多项目 项目属性到客户端 我的问题是: 如何使用eloquent获得用户的所有客户端? 似乎我不能用户hasManyPass方法,因为在客户端表中没有project_id。 因此,我希望达到的目标是:

  • 在有说服力的ORM上,是否有一种较短的方法在Laravel中插入数据? 目前我正在这样做: 就像你看到的,所有的列都像属性一样命名。 我知道您可以将对象与all()函数和fetch()一起使用。但是我从另一个对象(soap服务器)获取数据。 有没有办法转换这个?也许在模型上?

  • 我有三种模式——博客、帖子、评论。博客有很多帖子,帖子有很多评论 当我写作时 它会给所有的博客发帖子和评论。但我将如何获得那些由管理员用户创建的博客,即评论表中的用户id。在哪里写入

  • 我是Laravel5.2的新手,正在开发一个遗留系统,对雄辩有点困惑,希望有人能给我代码。 共有3个表格: 卡片类别卡片2类 卡片可以是许多类别的一部分,这些类别保存在cards2cat表中。 cards2cat表的结构如下 id(主键)图像(卡)类别 我想做的是在Cards模型中有一个方法,名为getCardsWithCategors,它返回Cards信息和category表中类别的名称。 ca

  • 我正在创建Laravel应用程序,我正在使用雄辩的ORM从DB检索数据,同时使用JSON响应进行响应。在本例中,我通过关系(player1,matchRule…)获得与其他相关数据的匹配。 在案例A中,一切正常,并返回所有相关数据。例子: 在B的情况下,我得到的只是匹配的id,它也工作得很好。 在C的情况下,我试图获得属性,但我得到空。为什么啊?如您所见,当在A中返回整个匹配时,它存在于对象中。