私はWebプログラミングとMVCアーキテクチャの初心者です。MVC:私のコードを入れるモデルは?
私はMVCアーキテクチャ(PHPとMySQLと一緒に)を使用してWebアプリケーションを作成しています。
フォームに提供される「利用可能な」連絡担当者を列挙し、フォームの選択した「担当者」フィールドに選択を行う人のリストを入力するSELECTステートメントを作成しました。 MySQLのコマンドラインからこれをテストしたので、私が書いたSELECT文は正常に動作します。
このコードを配置するための適切なモデル(この質問の最後にあるPHPコード)は、私が確信しているものです。ユーザーまたは会社?
私は「会社」テーブルに、以下のユニーク制約を持つよう会社が適切な場所であろうと思う:ここ
CONSTRAINT uc_company_contact_person_id UNIQUE (contact_person_id)
COMMENT 'A user can only be a contact person for one company.'
は私のモデルと関連テーブルのほんの一部です:
会社:典型的な会社のフィールドと「contact_person_id」フィールド(必須ですが、それが存在する場合、それはユニークなuser.id関連付けられている必要がありますNOT)
ユーザー:典型的なユーザーフィールドと「ROLE_ID」(ユーザーが割り当てられた役割を持っている必要がありますし、彼らが所属する割り当てられた会社を持っている必要があります)
役割:役割の一覧
許可 :許可のリスト
role_permissionテーブルは役割へのアクセス許可をバインドします。
"利用可能な"連絡担当者のリストを生成する私の関数の例。それがどのモデルに属しているかはっきりしていませんか?
public function listAvailableContactPersons($selectedContactPerson)
{
blah, blah, blah
SELECT user_account.id AS "User_ID", CONCAT(user_account.last_name, ", ", user_account.first_name) AS "Contact_Person"
FROM user_account, role
WHERE user_account.role_id = role.id
AND role.name NOT IN ('OWNER', 'DEVELOPER', 'WEBSITE_ADMIN')
AND user_account.id NOT IN (SELECT user_account.id
FROM company
LEFT OUTER JOIN user_account
ON user_account.company_id = company.id
WHERE company.contact_person_id = user_account.id)
OR (user_account.role_id = role.id AND user_account.id = :selectedContactPerson)
ORDER BY user_account.last_name;
blah, blah, blah
$stmt->bindValue(':selectedContactPerson', $selectedContactPerson, PDO::PARAM_STR);
blah, blah, blah
return $stmt->fetchAll();
}
が
マイク