Laravel 为加入设置排序规则(SQL 服务器)
Laravel set collation for join (SQL server)
我正在尝试将普通 SQL 查询移动到 Laravel 查询构建器。
这不是我第一次这样做,但现在 "different case has popped up"。
我需要为连接设置排序规则,简单来说SQL没问题:
"...
LEFT OUTER JOIN " . $pltable1 . " on PL01001=supplier collate Latvian_BIN
..."
Laravel 在我尝试时抛出错误:
->leftJoin($pltable1, "PL01001", "=", "supplier");
Cannot resolve the collation conflict between
"SQL_Latin1_General_CP1_CI_AS" and "Latvian_BIN" in the equal to
operation.
我知道这是因为我没有为连接指定排序规则,但我不知道如何执行此操作。有没有人遇到过这样的事情并找到了解决办法?
P.S。我无法更改 table 本身的默认排序规则
我记得我问过这个问题并意识到我已经找到了解决这个问题的方法:
DB::table('table1')
->leftJoin('table2', 'table1.column', '=', DB::raw('table2.column collate Latvian_BIN'))
->get();
基本上只需要在 DB::raw() 中包装一列和排序规则
希望有一天这对某人有所帮助
我正在尝试将普通 SQL 查询移动到 Laravel 查询构建器。
这不是我第一次这样做,但现在 "different case has popped up"。
我需要为连接设置排序规则,简单来说SQL没问题:
"...
LEFT OUTER JOIN " . $pltable1 . " on PL01001=supplier collate Latvian_BIN
..."
Laravel 在我尝试时抛出错误:
->leftJoin($pltable1, "PL01001", "=", "supplier");
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latvian_BIN" in the equal to operation.
我知道这是因为我没有为连接指定排序规则,但我不知道如何执行此操作。有没有人遇到过这样的事情并找到了解决办法?
P.S。我无法更改 table 本身的默认排序规则
我记得我问过这个问题并意识到我已经找到了解决这个问题的方法:
DB::table('table1')
->leftJoin('table2', 'table1.column', '=', DB::raw('table2.column collate Latvian_BIN'))
->get();
基本上只需要在 DB::raw() 中包装一列和排序规则 希望有一天这对某人有所帮助