2

我有一个对象 ,RequestRequestItem(别名为items)有多重关系。Request->items一个简单的结果集也是如此。

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

我基本上想简单地向 Request 添加一个新的相关记录,并让 Request->items 反映添加。我在文档中找不到任何东西,这实际上让我感到惊讶。

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

4

5 回答 5

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';
}
于 2015-05-13T18:27:15.997 回答
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 = .....
  }
}

希望这接近你所需要的

于 2014-09-22T18:20:11.867 回答
0

请告诉我你的数据库表结构完整的。

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

于 2014-09-22T10:13:17.783 回答
0

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

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

然后您将能够使用 $request->getItems(); 获取所有项目;

于 2013-09-17T14:48:07.050 回答
-1

使用以下代码添加保存:

$user = new Users();
$success = $user->save($this->request->getPost(), array('name', 'email'));
于 2015-05-06T12:50:09.793 回答