私は誰かが既存のデータベースに基づいてモデル ジェネレーターを作成するための仕様を書いています。仕様を説明するために、以下のダミー データベースを作成しました。
以下は、さまざまなテーブルを操作する方法を示すコード スニペットです。
<?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();
私はあまり技術的ではないので、上記が可能かどうかはよくわかりません。可能であれば、対応するモデルの生成に伴う作業量はどれくらいになるでしょうか。それに伴い、以下の質問をさせていただきます。
Q1: コーディング スタイルから、(合理的に) 実装できないものはありますか?
portfolio_has_customer
Q2:テーブルに余分なステップを持たせるために値を追加しますか、それとも上記のようにオブジェクトamount_of_contract
を介してプロパティにアクセスしますか?customer
n-m
Q3: の関係を処理するためportfolio_has_customer
の、上記のものよりも実装が簡単な代替手段はありますか?