我有两张表orders
和addresses
:
ORDERS ADDRESSES
------------ ------------
id id
customer_id street
address_id --- n:1 --- city
status state
total country
created_at zip
order
有一个地址,address
可以属于许多orders
。我还有两个模型,Order
和Address
来表示实体。
假设视图需要在HTML表格中显示订单历史记录,该表格必须包含来自 orders
和addresses
表格的信息(状态,总计,送货地址,等等。)。
执行此操作的一种方法是使用Order
或Address
的两个SELECT
查询将数据提取到两个独立的对象PDO::FETCH_CLASS
和INNER JOIN
中使用PDO::FETCH_ASSOC
对两个表进行查询(然后手动将它们映射到对象中)。但是,在这两种情况下,两个对象都没有连接。如果Address
可以与Address
一起加载会更方便,如下所示:
$order = Order::all()->with('Address')
如何使用普通PHP实现这种简单的关系?
到目前为止我的all()
方法:
public static function all() {
return DB::run('SELECT * FROM users')->fetchAll(PDO::FETCH_CLASS, 'User');
}
并且DB
类是从phpdelusions.net
奖励:由于我有一个DB
课程,我应该将with
,all
,find
,where
等方法放入父级Model
班级或ORM
班级位于DB
之上?