Phalcon中使用namespace时如何进行model相关的操作

Phalcon中的Model中使用了命名空间里如何定义关系映射?Phalcon的官方手册中未明确给出如何解决这个问题的方法。现提供给大家。方法如下,即是使用model中的alias选项即可。

<?php

namespace models;

class Robots extends \Phalcon\Mvc\Model

{

/**

*

* @var integer

*/

public $id;

/**

*

* @var string

*/

public $name;

/**

*

* @var string

*/

public $type;

/**

*

* @var integer

*/

public $year;

/**

* Independent Column Mapping.

*/

public function columnMap()

{

return array(

‘id‘ => ‘id‘,

‘name‘ => ‘name‘,

‘type‘ => ‘type‘,

‘year‘ => ‘year‘

);

}

public function initialize()

{

$this->hasMany( ‘id‘, ‘models\RobotsParts‘, ‘robots_id‘ , array( ‘alias‘ => ‘robotsParts‘ ));

$this->useDynamicUpdate(true);

\Phalcon\Mvc\Model::set( array( ‘phqlLiterals‘ => false ));

}

}

<?php

namespace models;

class Parts extends \Phalcon\Mvc\Model

{

/**

*

* @var integer

*/

public $id;

/**

*

* @var string

*/

public $name;

/**

* Independent Column Mapping.

*/

public function columnMap()

{

return array(

‘id‘ => ‘id‘,

‘name‘ => ‘name‘

);

}

public function initialize()

{

$this->hasMany( ‘id‘, ‘models\RobotsParts‘, ‘parts_id‘, array( ‘alias‘ => ‘robotsParts‘ ) );

$this->useDynamicUpdate( true );

}

}

<?php

namespace models;

class RobotsParts
extends \Phalcon\Mvc\Model

{

/**

*

* @var integer

*/

public $id;

/**

*

* @var integer

*/

public$robots_id;

/**

*

* @var integer

*/

public$parts_id;

/**

*

* @var string

*/

public$created_at;

/**

* Independent Column Mapping.

*/

public function columnMap()

{

return array(

‘id‘ =>
‘id‘,

‘robots_id‘
=> ‘robots_id‘,

‘parts_id‘
=> ‘parts_id‘,

‘created_at‘
=> ‘created_at‘

);

}

public function initialize()

{

$this->belongsTo(‘robots_id‘,
‘models\Robots‘,‘id‘,
array(‘alias‘
=> ‘robots‘ ) );

$this->belongsTo(‘parts_id‘,
‘models\Parts‘,‘id‘,
array(‘alias‘
=> ‘parts‘  ) );

$this->useDynamicUpdate(true);

}

}

如不使用alias即会出现形如下错误:

Notice: Access to undefined property models\RobotsParts::parts in /Library/WebServer/Documents/phalcon/app/controllers/ModController.php on
line 18

Notice: Trying to get property of non-object in /Library/WebServer/Documents/phalcon/app/controllers/ModController.php on
line 18。

时间: 2024-10-18 06:23:27

Phalcon中使用namespace时如何进行model相关的操作的相关文章

linux中的namespace

     本文将就namespace这个知识点,进行简单的归纳总结,力求通俗易通.在资料汇总的过程中,参考了许多网上的博客资料,在文章尾部给出相关链接.      namespace,命名空间,从名字上看,应该是类似于包含许多名字的空间,打个比方,三年一班的小明和三年二班的小明,虽说他们名字是一样的,但是所在班级不一样,那么,在全年级排行榜上面,即使出现两个名字一样的小明,也会通过各自的学号来区分.对于学校来说,每个班级就相当于是一个命名空间,这个空间的名称是班级号.班级号用于描述逻辑上的学生分

JavaScript中的namespace

1 <head> 2 <title> New Document </title> 3 <script> 4 var global = window.global||{}; 5 global.version = '1.1'; 6 global.author = 'SL'; 7 global.namespace = function (_namespace) { 8 var levels = _namespace.split('.'); 9 var obj =

WPF解决当ScrollViewer中嵌套ItemsControl时,不能使用鼠标来滚动翻页

1. ScrollViewer:滚动条容器,当内容超过指定的长度和宽度后,就会出现滚动条,而且可以使用鼠标中键来滚动, 简单例子如下: 1 <Window x:Class="ConnectScrollViewScrollingDemo.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.mic

IOS开发中滑动页面时NSTimer停止的问题

我们在做倒计时的时候,发现当你手指按着屏幕不放,拖动tableView滑动的时候,写在cell上得倒计时停止倒计时,松开继续倒计时.研究发现就是拖动tableView滑动时,NSTimer停止了. 这其实就是runloop的mode在做怪.runloop可以理解为cocoa下的一种消息循环机制,用来处理各种消息事件,我们在开发 的时候并不需要手动去创建一个runloop,因为框架为我们创建了一个默认的runloop,通过[NSRunloop currentRunloop]我们可以得到一个当前线程

SSH配置环境都正常,但是每次执行到Action中的方法时就中断了,而且不报任何错误

SSH配置环境都正常,但是每次执行到Action中的方法时就不执行课,而且不报任何错误.Action中的方法封装的是业务层,业务层封装DAO层,检查了一天才发现错误在哪. 在applicationContext.xml中报了一个异常,如: Multiple annotations found at this line: - Exception 'com/dao/StudentDAO : Unsupported major.minor version 51.0' - Exception 'com/

java.sql.date与java.util.date区别以及数据库中插入带时分秒的时间

java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.Date的子类,是一个包装了毫秒值的瘦包装器,允许 JDBC 将毫秒值标识为 SQL DATE 值.毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数. 为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将时间.分钟.秒和毫

JavaWeb开发中form、ajax提交数据Model转化

JavaWeb开发中form.ajax提交数据Model转化 问题 最近学习MongoDB数据库,作为java开发的我,当然需要做个小的web程序来测试一番了.在html中我采取ajax提交方式,因为我要模拟各种类型的数据,基础数据类型.数组.对象等.然而,最终发现了个不同的地方:Form和ajax提交数据,在HttpServletRequest中尽然参数名有所不同. 数据类型 form ajax 基础数据 para=value para=value 数组 para[]={"aaa",

SpringMVC: web.xml中声明DispatcherServlet时一定要添加load-on-startup标签

游历SpringMVC源码后发现,在web.xml中注册的ContextLoaderListener监听器只是初始化了一个根上下文,仅仅完成了组件扫描和与容器初始化相关的一些工作,并没有探测到具体每个URL应当map到哪个Controller, 哪个方法上.而剩一下的这些复杂工作都是由DispatcherServet来完成的,即应用服务器加载DispatcherServlet调用init()方法时才能触发这项工作.所以,如果在web.xml中配置DispatcherServlet时不设置 <lo

Java中字符串比较时==和equals的区别

==是比较两个字符串引用的地址是否相同,即是否指向同一个对象,而equals方法则比较字符串的内容是否相同. 例如String a = "abc"; String b = "abc"; a == b返回true,a.equals(b)同样返回true,这是为什么呢? 原来程序在运行时有一个字符串池,创建字符串时会先查找池中是否有相应的字符串,如果已经存在的话只需把引用指向它即可,如果没有则新建一个. 上例中创建a时,会在字符串池中首先创建一个"abc&qu