2013-08-20 4 views
2

У меня есть объект, Request, имеет отношение к RequestItem (aliased to items). Таким образом, Request->items - это простой набор результатов.Phalcon framework - добавить похожие модели

Я вижу, что в документах есть способ обновить связанные записи с помощью update() и удалить связанные записи с помощью delete(). Есть ли способ добавить похожие записи аналогичным образом? Я попробовал только $ this-> items [] = $ Item, но получил «Cursor - неизменяемый объект ArrayAccess».

Я в основном хочу просто добавить новую связанную запись в запрос и запросить элементы-> элементы. Я не смог найти что-либо в документах, что меня действительно удивило.

Этот вопрос уже более года на данном этапе. Новые ответы не являются необходимыми или полезными

ответ

0

Вы должны инициализировать sort (Request) в модели RequestItem. , когда вы добавляете его, вы создаете

$newItem = new RequestItem(); 
$newItem->setRequest($request); 
$newItem->create(); 

тогда вы сможете получить все элементы с помощью $ request-> GetItems();

0
class Request extends \Phalcon\MVC\Model 
{ 
    public function initialize() 
    { 
    $this->hasMany('id', 'RequestItem', 'request_id'); 
    } 
} 

$ this-> hasMany ('внешнего ключа основной модели', 'связанные название модели', 'внешний ключ для соответствующих ');

class RequestItem extends \Phalcon\MVC\Model 
{ 
    public function initialize() 
    { 
    $this->belongsTo('request_id', 'Request', 'id'); 
    } 
} 

$ this-> hasMany ('внешнего ключа для соответствующего', 'главное название модели', 'внешний ключ основной модели');

Пока это все настроено правильно, вы можете выполнить создание соответствующих записей, как это:

class RequestsController extends \Phalcon\MVC\Controller 
{ 
    public function createItemsAction($RequestId) 
    { 
    $Request = Request::findFirst($RequestId); 
    $RequestItem = new RequestItem(); 
    $RequestItem->Request = $Request; 
    $RequestItem->otherproperties = ..... 
    } 
} 

Надежда, что близко к тому, что вам нужно

-1

Используйте следующий код, чтобы добавить, что это сохранить:

$user = new Users(); 
$success = $user->save($this->request->getPost(), array('name', 'email')); 
1

Когда у вас есть отношения друг к другу, и вы хотите добавить новые элементы, вам нужно установить массив с объектами, которые вы хотите добавить. пример:

$Request = new Request(); 
// ... sets the attributes for Request object 
$item1 = new RequestItem(); 
$item1->attr1 = $value1; 
// ... add the attributes you want 
$item2 = new RequestItem(); 
$item2->attr1 = $value2; 
// ... and so on 
$items = array($item1, $item2 /*, ... all that you need */); 
$Request->items = $items; 
if ($Request->save()) { 
    echo 'Good'; 
} 
Смежные вопросы