mysql - 与 2 个表的 Eloquent Pivot 关系

标签 mysql laravel-4 relational-database eloquent

我不确定这是否可以完成,但我有 2 个表:

parts:
id      part_number     description             multiplier  kit   type
===============================================================================
2012    ADH01-PRCD01-E  Program disc            1.00        0     3 
2013    ADH01-STHO01-E  Objectives Worksheet    1.00        0     3 
2014    ADH01-STPT01-E  Student Post-test vA    1.00        0     3 
2015    ADH01-STPT02-E  Student Post-test vB    1.00        0     3

kit_parts:
id   kit_id   part_id
======================
1    2012    2013
2    2012    2014
3    2012    2015

如果套件已设置在零件表中,则需要查看套件零件才能知道还包含哪些内容。

我正在尝试弄清楚如何使用单个模型在 Laravel 中建立这种关系。

有人知道这是否可行吗?

谢谢

最佳答案

假设每个零件仅属于一个套件,您可以在零件模型中使用 kit 列上的自引用一对多关系来执行此操作:

public function kits()
{
    return $this->hasMany('Part', 'kit', 'kit');
}

对于任何单个部件(例如部件 #2012),您可以通过以下方式获取其套件中的所有部件:

$kitParts = Part::find(2012)->kits;
<小时/>

如果您需要检索关联的部件作为多个部件查询的一部分,您可以预先加载关系,以避免必须对结果集中的每个部件运行套件查询:

$parts = Part::with('kits')->get();

...因此结果集 $parts 的每个元素现在都将具有您可以访问的 kits 属性:

foreach($parts as $part) {
    //the part
    foreach ($part->kits as $kit) {
    // the parts in this kit
    }
}

关于mysql - 与 2 个表的 Eloquent Pivot 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26427905/

相关文章:

mysql - Assets 库存数据库设计

mysql - 使用mysql获取 friend 的 friend

php - laravel 4 artisan -- 如何回滚到特定的迁移状态?

laravel-4 - Laravel 扩展从 Composer 安装的供应商类

php - 更改 PHP SoapClient 请求中的 namespace ?

database - 关联类的正确使用

mysql - 数据库设计 : credit top-ups and transactions

MySQL 服务器已消失 从表中选择行时出错

mysql CASE SELECT Value AS ValueX(1,2,3) 取决于另一列中的值

php 在 for 循环中运行 mysql_query