PHP laravel框架where条件报错没有说没有加引号该怎么写
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP laravel框架where条件报错没有说没有加引号该怎么写相关的知识,希望对你有一定的参考价值。
DB::table('admin')->where('username','like','iam%')->get();这条语句给我报图上的错 是因为值没有加引号 可是我值加引号了 单引号双引号都用了 都不好使
参考技术A 这个报错的意思是 你的test数据库下没有admin这个表所以抛出异常你可以试一下看看你的数据库底下有没有这个表 如果有的话,
如果你用的是模型对应关系的话有可能是模型对应表没有找到
在模型关系里用protected $table = '表名';指定一下就好
Laravel 4:将 where 子句添加到连接条件
【中文标题】Laravel 4:将 where 子句添加到连接条件【英文标题】:Laravel 4: Adding where clause to a join condition 【发布时间】:2014-01-19 17:39:38 【问题描述】:它在laravel docs 中说可以在连接上添加 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();
我正在尝试实现的代码:
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();
【问题讨论】:
您将错误的变量传递给 where 子句尝试更正。 好的,更新了变量名,但问题依旧。 尝试在 where 子句中只使用 > ...... 【参考方案1】:如果您想在 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();
更新
在我认为您使用的 Laravel 4.0 中,您不能在连接闭包中使用 where
,但由于 Laravel 4.1 及更高版本,您可以在连接条件之后使用 where
条件。我找不到 Laravel 4.1 的文档,但 this is the #join documentation for L4.2 and above
【讨论】:
我不能使用'on',因为它不能使用静态日期加入。我想做的是在将结果加入其他表之前对其进行过滤,这实际上会缩短执行时间。 还要注意这个:github.com/laravel/framework/issues/3681 这样做时绑定搞砸了。【参考方案2】:请查看下面的答案
DB::table('users')
->join('contacts', function($join)
$join->on('users.id', '=', 'contacts.user_id')
->where('contacts.user_id', '>', 5);
)
->get();
【讨论】:
【参考方案3】:试试这个解决方案
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)
->where('contacts.effective_date', '=', $current_date);
)
->get();
【讨论】:
这就是问题所在。当我添加上面问题中所述的 where 子句时出现错误。【参考方案4】:$current_date = date('Y-m-d');
DB::table('users')
->join('contacts', function($join) use ($current_date)
$join->on('users.id', '=', 'contacts.user_id')
->where('contacts.effective_date', '>=', $current_date);
)
->get();
【讨论】:
【参考方案5】:您正在调用 $current_date 但您取消了 $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();
不知道这样能不能解决问题,试试看;)
【讨论】:
【参考方案6】:您确定您使用的是 laravel 4.1?我认为您使用的是 laravel 4.0 而不是 4.1。查看您的 composer.json 文件。
【讨论】:
这更多的是评论而不是问题的答案【参考方案7】:在 get()
函数调用之前添加它
->where('contacts.effective_date', '=', $current_date);
【讨论】:
【参考方案8】:$users = DB::table('users')
->join('contacts', 'users.id', '=','contacts.user_id')
->join('orders', 'users.id', '=', 'orders.user_id')
->select('users.*', 'contacts.phone', 'orders.price')->get();
https://laravel.com/docs/5.6/queries请查看此链接
【讨论】:
以上是关于PHP laravel框架where条件报错没有说没有加引号该怎么写的主要内容,如果未能解决你的问题,请参考以下文章
php框架 laravel 多重条件查询。对数据库查询,在满足日期范围查询的同时在满足一个或几个条件查询。