我有两个表,A和B.我的大部分数据来自表A,但我还需要验证某些信息(地址和电子邮件)与表B中的相同。我可以访问该信息查询,
select a.address, a.email, b.address, b.email from a, left join b on a.uniqueAttr=b.uniqueAttr
我正在尝试以OOP的方式做事,但我一直在努力弄清楚这在大计划中的位置,因为对象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()
方法)并且它有一个对象A知道它可能不应该知道的表B.
我对于对象A知道多少太偏执了?