PHP-ThinkPHP模型对象传值问题

发布于 2016-12-24 21:51:14 字数 784 浏览 1202 评论 1

我在模板解析的时候,写了一个多表模型处理方法

protected function tableJoin($table) {
$table = trim($table,',');
$Model = M();
if (strpos($table, ',') === false) {
return $Model->table(DB_PREFIX.$table);
} else {
$tableArray = explode(',', $table);
$resultObject = $Model->table(DB_PREFIX.$tableArray[0]);
array_shift($tableArray);
foreach ($tableArray as $tableValue) {
$tableValue = explode('|',trim($tableValue,'|'));
$resultObject = $resultObject->join(DB_PREFIX."{$tableValue[0]} ON {$tableValue[1]}");
}
return $resultObject;
}
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜无邪 2017-06-27 17:07:25

其实我想说的是
在第5行执行

$total = $Model->cache($tag['cache'])->where($tag['where'])->count(1);

后你的model需要重新指定你的table,否则的话,每执行一次查询,肯定会把所有的table、join、select、where等项清空的

对于对象复制不是用等号,而是要关键字clone

<?php
class A {}

$a = new A();
$b = $a;
var_dump($a);
var_dump($b);

输出
---------- PHP5.3 ----------
object(A)#1 (0) {
}
object(A)#1 (0) {
}
其实都是一个对象

<?php
class A {}

$a = new A();
$b = clone $a;
var_dump($a);
var_dump($b);

输出
---------- PHP5.3 ----------
object(A)#1 (0) {
}
object(A)#2 (0) {
}
而这样明显是2个对象,#1 和 #2

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文