我正在尝试使用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 …
我正在使用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)
提前致谢!
我试图通过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)
但这并没有考虑到括号.有任何想法吗?
我正在学习框架,现在正在使用它构建应用程序.
我需要让所有具有"用户"或"员工"角色的用户,但我在文档中找不到它.
帮助任何人?(我认为auth模块更像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)
是否可以按照我尝试的方式使用单个查询,还是必须进行两次重复的相同查询?一个用于计数,一个用于实际结果......
谢谢!
我需要生成这样的查询:
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 指南附带的 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') ));
想知道这是否是故意的,如果是,为什么?如果我确实想创建一个关联数组的数组,有什么更好的解决方法?
我如何让它工作?
$stuff = ORM::factory('mytable')
->with('user')
->with('other_stuff')
->find_all();
Run Code Online (Sandbox Code Playgroud)
我已经建立了所有关系,当我做其他查询时,一切似乎都在起作用.但是,在上面的查询中,它没有将表用户连接到mytable.我想这可能是因为一个mytable可能有很多用户.
在引用中有一个方法叫做join()我认为我可能需要在这里使用,但它们没有提供任何信息,我在这里搜索的东西不起作用.
当我尝试使用join而不是with,它尝试加入表,但它不包括任何"加入"信息,只是给出一个空().
我知道我的ORM数据库关系都设置正确,所以我有点困惑.
我在尝试做这项工作时遇到了一些麻烦.我有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) 我想在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-orm ×10
kohana-3 ×7
php ×7
kohana ×6
orm ×3
kohana-auth ×2
many-to-many ×1
mysql ×1
pdo ×1