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找不到模型。。 然后使用 trycatch 你可以检查类是否存在,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 - 检查模型是不是存在(不是记录)的主要内容,如果未能解决你的问题,请参考以下文章

Cakephp 检查模型是不是存在

Laravel 检查相关模型是不是存在

Kohana ORM count_all() 工作但 find_all() 不是

SQL 检查记录是不是存在

检查文件是不是存在然后追加记录

如何检查模型是不是有偶数条相关记录?