Laravel 根据外键获取数据

Posted

技术标签:

【中文标题】Laravel 根据外键获取数据【英文标题】:Laravel get data based on foreign key 【发布时间】:2015-11-09 22:19:31 【问题描述】:

所以我有 2 个表,TABLE1 和 TABLE2。 它们通过 Eloquent 链接: TABLE1 有很多 TABLE2,而TABLE2 有一个 TABLE 1。 它们与外键链接如下: 在 TABLE2 table1_id -> 链接到 -> TABLE1 id。

如何检索整个表数据或表 2, + 将 table1_id 替换为 table1 的列(例如,按书名)?

对抽象感到抱歉,但这是我能解释它的最佳方式吗? :D

【问题讨论】:

【参考方案1】:

您需要在模型中建立关系,例如,如果您有一个“类别”并且它有很多“产品”,您需要将此代码放入您的模型中

    public function products()
    
        return $this->hasMany('App\Product', 'foreign_key_you_have');
    

当您需要在视图中检索与该类别关联的所有产品时,您需要调用模型的函数,例如

@foreach($category->products as $cp) // with $category->products you call all products associated to your foreign_key
  <h1>$cp->price</h1>
@endforeach

【讨论】:

【参考方案2】:

最简单的方法是利用 Eloquent 的预加载,从 table2 中获取所有记录,并在 table1 中获取它们对应的记录。

这样就可以了:

$results = Table2::with('table1')->get();

foreach ($results as $table2record) 
  echo $table2record->id; //access table2 data
  echo $table2record->table1->booktitle; //access table1 data

【讨论】:

以上是关于Laravel 根据外键获取数据的主要内容,如果未能解决你的问题,请参考以下文章

想要使用外键关系获取laravel中当前登录用户的数据但给出重复的行

PHP Laravel 根据投票表的外键从问题表中获取所有问题

无法从 Laravel Vue 通讯录项目中的外键表中获取数据

如何在laravel中获取嵌套关系的数据

mysql获取外键, 根据数据库名和表名获取表所对应的所有外键

如何使用 laravel+VueJS 以一对一的关系获取数据