Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 4 leftJoin mySQL语句未正确返回_Php_Mysql_Laravel 4 - Fatal编程技术网

Php Laravel 4 leftJoin mySQL语句未正确返回

Php Laravel 4 leftJoin mySQL语句未正确返回,php,mysql,laravel-4,Php,Mysql,Laravel 4,我对我在Laravel的查询生成器方面缺乏经验感到有点沮丧。我有一个mySQL语句,它可以很好地比较两个几乎相同的表中是否有丢失的行。然而,Laravel版本不适合我 基本上我有两个表test_1和test_2,每个表都有列:id、name和color。我正在尝试列出任何缺少的行。以下是表格结构: 表:测试1 表:测试2 这是mySQL(工作正常),它返回:“4 | birgit | yellow” SELECT a.* FROM test_1 a LEFT JOIN test_2 b ON

我对我在Laravel的查询生成器方面缺乏经验感到有点沮丧。我有一个mySQL语句,它可以很好地比较两个几乎相同的表中是否有丢失的行。然而,Laravel版本不适合我

基本上我有两个表test_1和test_2,每个表都有列:id、name和color。我正在尝试列出任何缺少的行。以下是表格结构:

表:测试1

表:测试2

这是mySQL(工作正常),它返回:“4 | birgit | yellow”

SELECT a.*
FROM test_1 a
LEFT JOIN test_2 b ON b.name = a.name
WHERE b.id is NULL
以下是我认为应该与Laravel等价的内容(不起作用-它返回一个对象,其中三个属性的值都为null):

我的下一步是比较两个表中名称相同但颜色不同的位置,这也不起作用。一如既往,我们非常感谢您的任何帮助。谢谢

$test = DB::table('test_1')
    ->leftJoin('test_2', 'test_2.name', '=', 'test_1.name')             
    ->where('test_2.color', '!=', 'test_1.color')
    ->get();
更新:使用DB::raw方法(如下)可以正常工作

$test2 = DB::select( DB::raw('SELECT a.* FROM test_1 a LEFT JOIN test_2 b ON b.name = a.name WHERE a.color != b.color'));
$test3 = DB::select( DB::raw('SELECT a.* FROM test_1 a LEFT JOIN test_2 b ON b.name = a.name WHERE b.id is NULL'));

您会得到空值,因为这些值是表2中不匹配的值。您需要手动别名并从表_1中选择列

$results = DB::table('table_1')
            ->leftJoin('table_2', 'table_2.id', '=', 'table_1.id')
            ->where('table_2.id')
            ->select('table_1.id AS id', 'table_1.name AS name', 'table_2.color AS color')
            ->get();

如此接近,却又如此遥远!谢谢你的轻推。它工作得很好。。。非常感谢!
$results = DB::table('table_1')
            ->leftJoin('table_2', 'table_2.id', '=', 'table_1.id')
            ->where('table_2.id')
            ->select('table_1.id AS id', 'table_1.name AS name', 'table_2.color AS color')
            ->get();