PHP PEAR / DataObject эквивалентен простой функции поиска ActiveRecord в Rails - PullRequest
2 голосов
/ 03 июня 2011

В Rails, скажем, в приложении для ведения блогов, учитывая конкретный объект записи, вы можете получить имя автора сообщения, сделав что-то вроде:

post = Post.find(1)    
author_name = post.author.name

Есть ли PHP-эквивалент, использующий DataObject, что-то вроде (просто создающий здесь воображаемый синтаксис):

$postsTable = DB_DataObject::factory('posts');
$authorName = (($postsTable->id = 1)->find(true))->author->name;

              |  finds and autofetches post #1  |->author->name

Ответы [ 2 ]

1 голос
/ 03 июня 2011

Если вы хотите ORM с таким API, я бы порекомендовал PHP ActiveRecord :

$posts = Post::find('all', array('limit' => 10, 'include' => array('author')));
foreach ($posts as $post) {
   echo $post->author->first_name;
}

http://www.phpactiverecord.org/projects/main/wiki/Finders


Вы также можете быть заинтересованы в Propel ORM :

$book = BookQuery::create()
  ->useAuthorQuery()
    ->filterByFirstName('Leo')
  ->endUse()
  ->with('Author')
  ->findOne();
$author = $book->getAuthor();

http://www.propelorm.org/wiki/Documentation/1.6/Relationships

0 голосов
/ 01 июля 2011

DB_DataObject не имеет свободного интерфейса, поэтому вы не можете связать. Однако вы можете сделать это:

$postsTable = DB_DataObject::factory('posts');
if($postsTable->get($id)) {
  $authorname = $postsTable->getLink('author_id')->name;
}
...