标签: kohana-orm

Kohana 3.2 ORM和PDO

我正在尝试使用Kohana,我试图使用ORM + PDO + MySQL数据库,我似乎没有在谷歌或SO中找到答案.

我启用了数据库和ORM模块,并且我已将模块/ database/config/database.php中的PDO设置为默认值

我有一个简单的控制器和一个简单的模型:

MODEL应用程序/ classes/model/blogpost.php:

<?php
class Model_Blogpost extends ORM {
    protected $_table_name  = 'blog_post'; 
}
Run Code Online (Sandbox Code Playgroud)

CONTROLLER:在application/classes/controller/welcome.php中

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Welcome extends Controller {

  public function action_index() {

    $Blog_Post = ORM::factory('blogpost');    // ==> ERROR HERE

    $Blog_Post->name = 'test1';
    $Blog_Post->description = 'this is a quick test';
    $Blog_Post->content = 'The content goes here....';
    $Blog_Post->save();

    $id = $Blog_Post->id;

    $Blog_Post = ORM::factory('blogpost', $id);
    $view->Blog_Post = $Blog_Post;

    $this->response->body($view);
  }
} // End Welcome
Run Code Online (Sandbox Code Playgroud)

我尝试运行测试时出现以下错误:

Kohana_Exception …

php mysql pdo kohana kohana-orm

14
推荐指数
1
解决办法
7707
查看次数

Kohana PHP - 具有共享模型的多个应用程序

我正在使用Kohana 3创建一个包含两个应用程序的网站,一个管理应用程序和实际的站点前端.我已将文件夹分开以将两个应用程序分开,因此层次结构如下所示:

/applications
    /admin
        /classes
        /controller
        /...
    /site
        /classes
        /controller
        /....
Run Code Online (Sandbox Code Playgroud)

我的问题是,我需要如何创建共享/模型文件夹.本质上,管理员和站点本身都在相同的数据上运行,因此数据库层和业务逻辑或多或少保持相同.所以对我来说,拥有一个模型文件夹是有意义的,它位于两个应用程序文件夹之外.是否可以实现以下层次结构:

/applications
    /model --> Where model sits in a neatly generic location, accessible to all applications
    /admin
        /classes
        /controller
        /...
    /site
        /classes
        /controller
        /....
Run Code Online (Sandbox Code Playgroud)

提前致谢!

php kohana kohana-3 kohana-orm

11
推荐指数
1
解决办法
1285
查看次数

Kohana 3 ORM - 用括号分组条件

我试图通过ORM运行查询,如下所示:

   SELECT * from table where (fname like 'string%' or lname like 'string%') 
AND (fname like 'string2%' or lname like 'string2%');
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所拥有的:

$results = ORM::factory('profiles');
foreach ($strings as $string) {
    $result->where('fname', 'like', "$string%");
    $result->or_where('lname', 'like', "$string%");
}
Run Code Online (Sandbox Code Playgroud)

但这并没有考虑到括号.有任何想法吗?

php orm kohana kohana-3 kohana-orm

6
推荐指数
2
解决办法
4710
查看次数

Kohana 3 auth模块,让用户具有"员工"或"经理"角色

我正在学习框架,现在正在使用它构建应用程序.

我需要让所有具有"用户"或"员工"角色的用户,但我在文档中找不到它.

帮助任何人?(我认为auth模块更像ORM问题)

php kohana-3 kohana-orm kohana-auth

5
推荐指数
1
解决办法
3681
查看次数

是否可以重复使用Kohana ORM查询行计数?

所以我有我的疑问......

$records = ORM::factory('category');
Run Code Online (Sandbox Code Playgroud)

添加WHERE子句如此...

$records = $records->where('categoryid', 'LIKE', 'aa');
Run Code Online (Sandbox Code Playgroud)

抓住分页计数......

$count = $records->count_all();
Run Code Online (Sandbox Code Playgroud)

我的where子句被清除了......

SELECT `categories`.* FROM `categories` LIMIT 20 OFFSET 0
Run Code Online (Sandbox Code Playgroud)

用这条线注释掉了

//$count = $records->count_all();
Run Code Online (Sandbox Code Playgroud)

我的SQL看起来很好......

SELECT `categories`.* FROM `categories` WHERE `categoryid` LIKE 'aa' LIMIT 20 OFFSET 0
Run Code Online (Sandbox Code Playgroud)

是否可以按照我尝试的方式使用单个查询,还是必须进行两次重复的相同查询?一个用于计数,一个用于实际结果......

谢谢!

php kohana kohana-3 kohana-orm

5
推荐指数
1
解决办法
1925
查看次数

Kohana 3 ORM比较where子句中的2列

我需要生成这样的查询:

SELECT * FROM `table1` WHERE `date1` < `date2`
Run Code Online (Sandbox Code Playgroud)

我找不到如何比较kohana ORM中的2列.这里date2被视为文本.

$foo = ORM::factory('model1')->where('date1','<','date2');
Run Code Online (Sandbox Code Playgroud)

我该怎么写这一行?

谢谢!

更多信息:

我暂时使用它:

$query = DB::query(Database::SELECT, "SELECT id FROM table1 WHERE `date1` < `date2`");
$result = $query->execute();

$foo = array();
foreach ($result as $r) {
    $foo[] = ORM::factory("model1", $r['id']);
}
Run Code Online (Sandbox Code Playgroud)

kohana-3 kohana-orm

5
推荐指数
1
解决办法
664
查看次数

Kohana 3 ORM as_array 返回 ORM 数组

我正在执行一个简单的查询并想要取回一个数组。根据 Kohana 3 指南附带的 ORM 教程,我认为我可以执行以下操作:

ORM::factory('user')->find_all()->as_array();
Run Code Online (Sandbox Code Playgroud)

但这似乎给了我一个模型对象数组(即数组(User_Model1,User_Model2 ...

查看源代码,我可以通过使用以下补丁轻松解决此问题。

modules/database/classes/kohana/database/result.php
@@ -94,7 +94,7 @@
                        foreach ($this as $row)
                        {
-                               $results[] = $row;
+                               $results[] = $row->as_array();
Run Code Online (Sandbox Code Playgroud)

这似乎更符合用户指南所说的:

ORM 的一个强大功能是 ORM::as_array 方法,它将以数组的形式返回给定的记录。如果与 ORM::find_all 一起使用,将返回所有记录的数组。一个很好的例子是什么时候使用选择列表:

// 显示用户名的选择字段(使用 id 作为值) echo Form::select('user', ORM::factory('user')->find_all()->as_array('id', 'username') ));

想知道这是否是故意的,如果是,为什么?如果我确实想创建一个关联数组的数组,有什么更好的解决方法?

php orm kohana-3 kohana-orm

4
推荐指数
1
解决办法
1万
查看次数

未加入Kohana 3.1 ORM的表格

我如何让它工作?

$stuff = ORM::factory('mytable')
    ->with('user')
    ->with('other_stuff')
    ->find_all();
Run Code Online (Sandbox Code Playgroud)

我已经建立了所有关系,当我做其他查询时,一切似乎都在起作用.但是,在上面的查询中,它没有将表用户连接到mytable.我想这可能是因为一个mytable可能有很多用户.

在引用中有一个方法叫做join()我认为我可能需要在这里使用,但它们没有提供任何信息,我在这里搜索的东西不起作用.

当我尝试使用join而不是with,它尝试加入表,但它不包括任何"加入"信息,只是给出一个空().

我知道我的ORM数据库关系都设置正确,所以我有点困惑.

kohana-3 kohana-orm

4
推荐指数
1
解决办法
3504
查看次数

关于kohana的多对多关系3.2

我在尝试做这项工作时遇到了一些麻烦.我有2个型号,User_Pro和Category.我阅读了关于kohana指南的关系文档,我理解我需要$_has_many在User_Pro和Category模型上定义关系,并使用belongs_to字段创建模型user_pro_categories.

User_Pro模型:

protected $_has_many = array(
    'categories' => array(
        'model'   => 'TM_Category',
        'through' => 'user_pro_categories',
            'foreign_key' => 'id_user_pro',
    ),
);
Run Code Online (Sandbox Code Playgroud)

分类型号:

protected $_has_many = array(
    'users_pro' => array(
        'model'   => 'TM_User_Pro',
        'through' => 'user_pro_categories',
        'foreign_key' => 'id_category',
    ),
);
Run Code Online (Sandbox Code Playgroud)

user_pro_categories模型:

    protected $_belongs_to = array(
        'user_pro' => array(
            'model'       => 'TM_User_Pro',
            'foreign_key' => 'id_user_pro',
        ),
        'category' => array(
            'model'       => 'TM_Category',
            'foreign_key' => 'id_category',
        ),
);
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Database_Exception [ 1054 ]: Unknown column 'tm3_user_pro_categories.category_id' in 
'on clause' [ SELECT …
Run Code Online (Sandbox Code Playgroud)

php orm many-to-many kohana kohana-orm

4
推荐指数
1
解决办法
3794
查看次数

无法使用Kohana 3.3.0 ORM Auth登录

我想在Kohana 3.3.0中使用带有ORM驱动程序的Auth模块,但我唯一能做的就是在数据库中插入新用户.我不能用他们登录.

我从一个空白的Kohana项目,一个简单的路径,数据库配置文件开始,然后我导入了ORM模块中包含的auth SQL模式(没有其他表).我没有为用户创建新的模型文件.

这是我复制到app path/config目录的配置文件:

<?php defined('SYSPATH') or die('No direct access allowed.');

return array(

        'driver'       => 'ORM',
        'hash_method'  => 'sha256',
        'hash_key'     => 'secretkey',
        'lifetime'     => 1209600,
        'session_type' => Session::$default,
        'session_key'  => 'auth_user',
        'users'        => array()

);
Run Code Online (Sandbox Code Playgroud)

现在这是我的简单控制器.我尝试将用户加载到te数据库,然后使用该用户登录.

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_User extends Controller {

    public function action_index(){

        // Enter a new user manually
        $user = ORM::factory('user');
        $user->username = 'mylogin';
        $user->password = 'mypassword';
        $user->email = 'me@email.fr';

        try{
            $user->save();
        }
        catch(ORM_Validation_Exception $e){
            $errors = $e->errors();
        } …
Run Code Online (Sandbox Code Playgroud)

kohana kohana-orm kohana-auth

4
推荐指数
1
解决办法
2950
查看次数

标签 统计

kohana-orm ×10

kohana-3 ×7

php ×7

kohana ×6

orm ×3

kohana-auth ×2

many-to-many ×1

mysql ×1

pdo ×1