我正在尝试使用 eloquent 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 核心。
在此错误中,主要问题是and 周围的反斜杠和\"Users\" and \"email\"
引号。如何删除这个引号以及 laravel 这样做的原因。Users
email
但是,如果我尝试这个
$sql = "SELECT * FROM $this->table WHERE email = 'myemail@domain.com'";
$return = DB::select(DB::raw($sql));
它工作得很好,但我认为这不是在 laravel 中构建查询的更好方法。
供参考
我在 Mac OS X EL Capitan、MAMP 服务器、php 5.6.10、pdo-odbc 上使用 laravel 5