我尝试使用雄辩的ORM laravel5 PDO ODBC连接进行查询以检索所有用户,并在托盘执行此操作时
$email = "myemail@domain.com";
$data = Users::where('email',$email)->get();
我收到此错误
"SQLSTATE[42000]: Syntax error or access violation: 402 [FreeTDS][SQL Server]The data types varchar and text are incompatible in the equal to operator. (SQLExecute[402] at /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_lang_php/php56-odbc/work/php-5.6.19/ext/pdo_odbc/odbc_stmt.c:254) (SQL: select * from \"Users\" where \"email\" = 'myemail@domain.com')"
如您所见,我使用FreeTDS连接SQL Server,我不知道这个驱动程序是否需要配置或我必须修改laravel核心。
在此错误中,主要问题是\"Users\" and \"email\"
反斜杠和Users
和email
周围的引号。如何删除此引号以及为什么laravel正在执行此操作。
然而,如果我试试这个
$sql = "SELECT * FROM $this->table WHERE email = 'myemail@domain.com'";
$return = DB::select(DB::raw($sql));
它完美无缺,但我认为这不是在laravel中构建查询的更好方法。
FYI
我在Mac OS X上使用laravel 5 EL Capitan,MAMP Server,php 5.6.10,pdo-odbc