Phalcon框架 - 添加相关模型

时间:2013-08-20 15:36:20

标签: php orm phalcon

我有一个对象Request,与RequestItem有很多关系(别名为items)。所以Request->items是一个简单的结果集。

我在文档中看到有一种方法可以使用update()更新相关记录,并使用delete()删除相关记录。有没有办法以类似的方式添加相关记录?我尝试了$ this-> items [] = $ Item,但得到了“Cursor是一个不可变的ArrayAccess对象”错误。

我基本上只想向Request添加一个新的相关记录,并让Request->项反映添加。我无法在文档中找到任何内容,实际上让我感到惊讶。

这个问题已经过了一年多了。新答案没有必要或没有帮助

5 个答案:

答案 0 :(得分: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';
}

答案 1 :(得分:0)

您必须在RequestItem模型中初始化belongsTo(Request)。 当你添加它时,你创建

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

然后您将能够使用$ request-> getItems();

获取所有项目

答案 2 :(得分:0)

请向我展示你的db表结构,其中包含完整的realation。

并且您最常使用此页面中的方法: http://docs.phalconphp.com/pt/latest/reference/models.html#defining-relationships

答案 3 :(得分: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 = .....
  }
}

希望接近你需要的东西

答案 4 :(得分:-1)

使用以下代码添加即保存:

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