我想使用来自http://www.redbeanphp.com的预先打包的单文件Redbean 1.3 ORM。当我试图以这种方式得到结果时..
require_once ('redbean/rb.php');
require_once ('config.php');
R::setup('mysql:host='.MYSQL_HOST.';dbname=mydb', MYSQL_USER, MYSQL_PASS);
$test = R::find('function', ' ID < 10 ');
foreach ($test as $val) echo $val->Class.'<br>';
输出如下:
Notice: Undefined index: id in rb.php on line 3686
Notice: Undefined index: id in rb.php on line 3686
Notice: Undefined index: id in rb.php on line 3686
value.of.class.field.from.function.table // << prints only the 9th value
正如您所看到的,即使有ID 1到xxx的条目,我也只得到最后一行的结果。当我将where子句设置为ID < 9
时,我只打印出第8行。
任何想法,为什么?或者redbean的任何无配置替代品?
答案 0 :(得分:2)
RedBeanPHP的id区分大小写,您需要使用'id'而不是ID。或者您必须使用Bean Formatter来确保RedBeanPHP知道您要使用ID作为主键:
答案 1 :(得分:0)
您可以将表的主键重命名为“id”,然后Redbean可以识别它。如果您不希望像这样更改架构,则必须格式化bean并相应地返回自定义ID:
class MyTableFormatter implements RedBean_IBeanFormatter{
public function formatBeanTable($table) {
return $table;
}
public function formatBeanID( $table ) {
if ($table=="user") return "user_id";
return "id";
}
}
R::$writer->tableFormatter = new MyTableFormatter;
$user = R::find( "user" );
代码参考:https://groups.google.com/forum/#!topic/redbeanorm/weIEM8p71eQ