我有一个对象Request
,与RequestItem
有很多关系(别名为items
)。所以Request->items
是一个简单的结果集。
我在文档中看到有一种方法可以使用update()
更新相关记录,并使用delete()
删除相关记录。有没有办法以类似的方式添加相关记录?我尝试了$ this-> items [] = $ Item,但得到了“Cursor是一个不可变的ArrayAccess对象”错误。
我基本上只想向Request添加一个新的相关记录,并让Request->项反映添加。我无法在文档中找到任何内容,实际上让我感到惊讶。
这个问题已经过了一年多了。新答案没有必要或没有帮助
答案 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'));