use*_*507 9 php database fluent laravel laravel-4
它在laravel文档中说可以在连接上添加where子句,但每当我使用where子句尝试使用我的代码时,我都会收到错误:Call to undefined method Illuminate\Database\Query\JoinClause::where().任何人都知道如何在join子句中添加where子句?
Laravel网站示例:
DB::table('users')
->join('contacts', function($join)
{
$join->on('users.id', '=', 'contacts.user_id')
->where('contacts.user_id', '>', 5);
})
->get();
Run Code Online (Sandbox Code Playgroud)
代码我正在尝试实现:
DB::table('users')
->join('contacts', function($join)
{
$current_date = date('Y-m-d');
$join->on('users.id', '=', 'contacts.user_id')
->where('contacts.effective_date', '>=', $current_date);
})
->get();
Run Code Online (Sandbox Code Playgroud)
如果你想在join添加更多$join->on或添加更多条件$join->orOn.
如果要为第一个选择添加条件,请将其添加到连接函数外部.
DB::table('users')
->join('contacts', function($join)
{
$date = date('Y-m-d');
$join->on('users.id', '=', 'contacts.user_id');
})
->where('contacts.effective_date', '>=', $date);
->get();
Run Code Online (Sandbox Code Playgroud)
更新
在我认为你使用的Laravel 4.0中,你不能where在你的连接闭包中使用,但是从Laravel 4.1及更高版本开始,你可以where在你的连接条件之后有条件.我找不到Laravel 4.1的文档,但这是L4.2及更高版本的#join文档
请检查下面的答案
DB::table('users')
->join('contacts', function($join)
{
$join->on('users.id', '=', 'contacts.user_id')
->where('contacts.user_id', '>', 5);
})
->get();
Run Code Online (Sandbox Code Playgroud)
您正在调用 $current_date 但您 decarle $date
DB::table('users')
->join('contacts', function($join)
{
$date = date('Y-m-d');
$join->on('users.id', '=', 'contacts.user_id')
->where('contacts.effective_date', '>=', $date);
})
->get();
Run Code Online (Sandbox Code Playgroud)
我不知道这是否能解决问题,尝试一下;)