2015年5月29日金曜日

PHP ORM Spot2で、リレーション(Eager Loading)

PHP ORM Spot2で、リレーション(Eager Loading)です。クエリービルダーでは、JOINをサポートしていないらしいので、モデルに定義する必要があります。「->with()」で、リレーションデータを取得してくれます。

モデル
namespace Entity;

use Spot\EntityInterface as Entity;
use Spot\MapperInterface as Mapper;

class Stations extends \Spot\Entity {
  (省略)
  public static function relations(Mapper $mapper, Entity $entity)
  {
    return [
      'route' => $mapper->belongsTo($entity, 'Entity\Routes', 'route_id'),
    ];
  }
}

リレーションを取得。Stations(駅)とRoutes(路線)を結びつけています。
$stationMapper = $spot->mapper('Entity\Stations');
$stations = $stationMapper->all()->with('route');

実際に設定してみたサイトがこちら

0 件のコメント:

コメントを投稿