Kohana - 检查模型是不是存在(不是记录)
Posted
技术标签:
【中文标题】Kohana - 检查模型是不是存在(不是记录)【英文标题】:Kohana - Check if model exists (Not a record)Kohana - 检查模型是否存在(不是记录) 【发布时间】:2015-02-25 08:02:26 【问题描述】:我想检查一下 Kohana 中的模型是否存在 - 或不存在!我使用 ORM 加载模型。
我当前的代码:
// Load model
$myModel = ORM::factory('mymodel')->where('id', '=', 1);
在这种情况下,ORM 会尝试加载模型 - 但我很确定该模型将不存在,因为到目前为止我还没有创建它。但这没关系。而不是尝试加载第一条记录,我必须检查模型是否存在 - 也许使用另一个 ORM 函数?
我知道,您可以使用ORM::factory('mymodel')->where('id', '=', 1)->loaded()
来检查单个记录/结果。当我尝试获取第一条记录时,我的 kohana 确实会引发异常..
你们如何检查模型是否存在?
【问题讨论】:
【参考方案1】://loading model
$myModel = ORM::factory('mymodel')->where('id', '=', 1)->find();
我认为您错过了链中的find
方法。
然后你可以检查模型是否按你想要的方式加载
//checking if loaded
if ($myModel->loaded())
编辑
判断模型是否存在
try
//loading model
$myModel = ORM::factory('mymodel')->where('id', '=', 1);
//more logic
catch ($e) //or you can define exception which throws ORM::factory
//doesn't exist
【讨论】:
对我不起作用。 ORM 有一个简短的语法。ORM::factory('mymodel')->where('id', '=', 1)->find();
和ORM::factory('mymodel')->where('id', '=', 1)
完全一样。。我的情况,你尝试用ORM工厂构建模型,Kohana会抛出这个异常,因为ORM找不到模型。。
然后使用 try
和 catch
块
你可以检查类是否存在,KO3
没有命名空间所以很容易
在count
你的对象之后尝试find_all()
。【参考方案2】:
嗯,模型是一个类。如果在 php 中加载了“Model_Mymodal”,您可以使用class_exists() 检查
if(class_exists("Model_Mymodel"))
// Do something
【讨论】:
【参考方案3】:empty(Kohana::find_file('classes', 'model/customer')) ? FALSE : TRUE;
【讨论】:
请向 OP 和 SO 的未来访问者解释您为什么这样做。 find_file 在级联文件系统中搜索一个文件,并返回具有最高优先级的文件的路径,以便它可以被包含。 kohanaframework.org/3.0/guide/api/Kohana#find_file以上是关于Kohana - 检查模型是不是存在(不是记录)的主要内容,如果未能解决你的问题,请参考以下文章