我需要使用DB::raw
执行查询,但似乎根本无法正常工作。
由于某些原因,Laravel不执行绑定,并且查询失败。我已经尝试了很多查询,事件,甚至是一个简单的查询也不起作用。
use Illuminate\Support\Facades\DB;
$query = 'select id from :my_table';
$results = DB::select(
DB::raw($query),
[
'my_table' => 'advertisement__rentadvertisements',
]
);
dd($results);
错误
SQLSTATE [42000]:语法错误或访问冲突:1064 您的SQL语法有误;检查手册 对应于您的MySQL服务器版本以使用正确的语法 靠近“?”在第1行(SQL:从:my_table中选择ID)
有什么想法吗?
答案 0 :(得分:1)
如this post和this post中所述,您不能只替换表名或列。
除非您简化了示例,并且进行的事情比您提到的要多,我建议仅使用查询生成器:
DB::table('advertisement__rentadvertisements')->get('id')
答案 1 :(得分:0)
您遇到语法错误,请尝试删除:
中的$query
,这样就可以了,而且您的语句需要类似select * from table_name where id = ?
的条件
答案 2 :(得分:0)
您的绑定语法似乎是问题所在。您的数组中缺少分号:
$query = "select id from :my_table";
$results = DB::select(
DB::raw($query),
[
':my_table' => 'advertisement__rentadvertisements',
]
);
错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1 (SQL: select id from :my_table)"
表示查询中的:my_table
没有被advertisement__rentadvertisements
取代。
答案 3 :(得分:0)
您不能只替换表名或列。
查看更多:https://laravel.com/docs/5.8/queries#selects
更改:
$query = 'select id from :my_table';
$results = DB::select(
DB::raw($query),
[
'my_table' => 'advertisement__rentadvertisements',
]
);
收件人:
$results = DB::table('advertisement__rentadvertisements')->select('id')->get();
希望它会对您有所帮助。