【问题标题】:How does Laravel resolve some methods in models?Laravel 如何解析模型中的一些方法?
【发布时间】:2021-08-29 06:53:36
【问题描述】:

我想知道 laravel 是如何找到的以及它是如何工作的,比如 realtions 方法

(1:1 & 1:M)


例如在用户模型中,我与我的帖子模型有一对多的关系

public function posts(){
return $this->hasMany(Post::class);
}

当我想获取一些用户帖子数据时,我将使用此代码

$user = User::find(1);
$user->posts();

这是我的问题 $user->posts(); laravel 如何找到并重新喜欢它

【问题讨论】:

  • 这就是代码的工作方式。 hasMany 告诉核心如何做到这一点...查看hasMany 的源代码,它扩展了HasOneOrMany。它是纯 PHP...没什么花哨的...
  • 你的意思是$user->posts 没有括号?因为$user->posts() 返回的是查询构建器实例,而不是数据。

标签: php laravel laravel-5 eloquent laravel-relations


【解决方案1】:

hasMany 只是 Eloquent 为流畅地查询数据库提供的关系之一。使用正确的列名和表名,使用这些关系,您可以轻松构建逻辑结构,而无需深入复杂的查询。

当您使用hasMany 时,Eloquent 知道您查询的模型可以有 n 个相关模型,并将返回一个集合。它知道如何使用模型和方法名称进行查询。因此,由于您的用户拥有用于帖子的 hasMany,Eloquent 将在 posts 表上查询 user_id

例如,当您在hasMany 上转储查询日志时,它将返回以下内容:

select * from `posts` where `posts`.`user_id` in (1)

如果你急切地加载它,Eloquent 会自动将它附加到你的模型中: User::with('posts')->find(1)

我建议阅读 docs 关于关系的文章,以了解 Laravel 和 Eloquent 假设构建查询的内容。

【讨论】:

    猜你喜欢
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2019-08-21
    • 2023-03-21
    相关资源
    最近更新 更多