У меня есть две таблицы, A и B. Большая часть моих данных поступает из таблицы A, но мне также необходимо убедиться, что некоторая информация (адрес и адрес электронной почты) такая же, как в таблице B. Я могу получить доступ к этой информации с помощью запроса ,
select a.address, a.email, b.address, b.email from a, left join b on a.uniqueAttr=b.uniqueAttr
Я пытаюсь делать вещи ООП способом, но я изо всех сил пытался выяснить, где это вписывается в общую схему, потому что объект A действительно не должен заботиться об информации в таблице B.
Моя первая идея — сделать что-то вроде этого псевдокода:
<?php
// list view
$a = new aList;
$rows = $a->findAll();
for($i=0; $i<sizeof($rows); $i++) {
$b = new bList;
$foreignRow = $b->find($row->foreignKey);
// do something with the info
if($foreignRow->address != $a->address) { $error = 'address'; }
// do template stuff...
}
Но если я сделаю это так,
$someObject->isAddressSame()
Другой вариант, который я вижу, это
псевдокод:
<?php
// list view
$a = new aList;
$rows = $a->findAllWithTableB();
for($i=0; $i<sizeof($rows); $i++) {
$error = $a->isAddressSame($row);
// do other view stuff
}
Но похоже, что это повторяет ->findAll()
метод), и объект ObjectA знает о таблице B то, что он, вероятно, не должен знать.
Я слишком параноидален из-за того, как много объектов знает А?
Задача ещё не решена.
Других решений пока нет …