如何处理与我的PHP模型的n-m关系?

时间:2012-05-19 13:54:49

标签: php database oop coding-style complexity-theory

我正在为某人编写规范,以便根据现有数据库创建模型生成器。我创建了以下虚拟数据库来说明规范:

enter image description here

这是一个代码片段,展示了如何操作各种表:

<?php
// DISPLAYING VALUES
$companies = new $Companies();
$companies->get_all();
foreach ($companies as $company) {
    echo "Company name: " . $company->name;
    // 1-n relationship FROM company table so company_type is 1 object
    echo "Type of company: " . $company->company_type->name;
    // 1-n relationship TO company table so portfolios is a collection of 0
    // or more objects
    foreach ($company->portfolios as $portfolio) {
        foreach ($portfolio->customers as $customer) {
            echo $customer->amount_of_contract;
            echo $customer->name;
        }
    }
}

// ADDING A PORTFOLIO
$companies = new $Companies;
$company = $companies->get_by_name('mycompany');
$portfolio = new $Portofolio;
$portfolio->company_id = $company->id;
$portfolio->year = '2012';
$portfolio->create();

由于我不是很技术,我不知道上述是否可能,如果是这样,生成相应模型所需的工作量是多少。因此,我想问一下以下问题:

问题1:从编码风格来看,您是否看到任何不合理(可合理)实施的内容?

Q2:是否会为portfolio_has_customer表添加任何值,或者通过amount_of_contract对象访问customer属性,如上所示?

问题3:处理n-m portfolio_has_customer关系的替代方法是否比上述方法更难实施?

1 个答案:

答案 0 :(得分:0)

Q1:语法类似于kohana framework使用的ORM,对我来说它看似可实现

Q2:有时可能会遇到这种使用数据透视表的问题,对我来说唯一看起来很奇怪的是你访问该属性的方式(我经常看到投资组合和portfolio_has_customer之间的额外关系) ),虽然不认为理所当然

Q3:不,我不知道任何不那么复杂的