Laravel 4 Build Query where子句

时间:2013-12-31 01:37:22

标签: php laravel

我将代码从CodeIgniter移植到Laravel。并对查询构建器有一些疑问。

在codeigniter中,我可以将where子句添加到活动记录对象,因为我在类中初始化每个属性,如

$this->db->where('xxxx','bbbb'); 

在一个属性初始化函数中,

$this->db->where('yyyy','aaaa'); 

在另一个属性函数中,它将全部链接起来,直到我触发查询。但这似乎不是Laravel的情况。

这是我在每个属性初始化函数

中的laravel中所做的
DB::table($this->table)->where('xxxx','bbbb');
DB::table($this->table)->where('yyyy','aaa');

当从外部调用实际方法时,它会运行

DB:table($this->table)->get(); 

但这给了我一个SELECT * FROM TABLENAME没有任何条款。那么我在这里做错了什么:x或者我不应该像对待codeigniter一样对待laravel并且想到一些完全不同的东西来处理这种动态where子句?

同样在codeigniter中,您可以将查询的一部分设置为缓存,因此即使您触发查询,这些部分也会保留下一个查询,通常是where子句。 Laravel有类似的功能吗?谢谢!

2 个答案:

答案 0 :(得分:2)

您可以将当前的工作分配给变量,并在此基础上进行构建,让我根据您的示例向您展示一个示例:

而不是这个

DB::table($this->table)->where('xxxx','bbbb');
DB::table($this->table)->where('yyyy','aaa');

试试这个......

$query = DB::table($this->table)->where('xxxx','bbbb');
$query->where('yyyy','aaa');

$results = $query->get();

答案 1 :(得分:0)

  

我不应该像对待codeigniter一样对待laravel,并且想一些完全不同的东西来处理这种动态where子句?

这不是动态where子句。

并且请养成阅读文档的习惯。

来自 Fluent query builder

的文档

$users = DB::table('users')->where('votes', '>', 100)->get();

您可以将查询的一部分设置为缓存,因此即使您触发查询,这些部分也会保留下一个查询,通常是where子句。 Laravel中是否有类似的功能?

$users = DB::table('users')->remember(10)->get();

下次,只需打开文档即可。它们包含了所有这些。