Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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 获取表记录,但在另一个表中具有外键值的记录除外_Php_Sql_Laravel_Eloquent - Fatal编程技术网

Php 获取表记录,但在另一个表中具有外键值的记录除外

Php 获取表记录,但在另一个表中具有外键值的记录除外,php,sql,laravel,eloquent,Php,Sql,Laravel,Eloquent,我有两张桌子: goods: id | name imported_goods: id | good_id | amount 进口商品具有表商品的外键值,我想做的是: 显示所有货物记录,但不显示包含外来信息的记录 进口商品的关键价值 示例CSV: 货物 进口货物 预期结果: 4,mango 所有其他记录都被丢弃了 好榜样 引进了一个很好的模式 您可以利用子查询: 从X选择*其中id不在Y中选择X_id; 或者,您可以执行连接: 在X.id=Y.X\u id上从X左键选择X.*,其中Y.X

我有两张桌子:

goods:  id | name

imported_goods: id | good_id | amount
进口商品具有表商品的外键值,我想做的是:

显示所有货物记录,但不显示包含外来信息的记录 进口商品的关键价值

示例CSV:

货物

进口货物

预期结果:

4,mango
所有其他记录都被丢弃了

好榜样

引进了一个很好的模式


您可以利用子查询:

从X选择*其中id不在Y中选择X_id; 或者,您可以执行连接:

在X.id=Y.X\u id上从X左键选择X.*,其中Y.X\u id为NULL;
如果您不必担心性能,我建议您选择第一个选项,它更可读,更容易理解。如果你需要考虑,

如果你遵循好的实践和推荐表名、模型名、键、字段等命名约定,就可以用:

// Parent.php model 
public function children()
{
    return $this->hasMany(Child::class);
}

// than somewhere in controller
$parents = Parent::doesntHave('children')->get();

这是一个通用的例子。如果您共享的实际名称和模型类代码与表结构一样多,而不是一些x/y占位符,我将能够针对您的具体情况讲述更多信息。

向我们展示一些示例表数据和预期结果@jarlh添加了预期结果的样本。这是否回答了您的问题@Rob Streeting是的,是的,但它的答案是原始SQL查询,在这里我希望它具有雄辩的关系,因为我使用的是Laravel。El_vanja的答案很好,但它并没有真正受益于雄辩的引擎和下面的问题线索。有可能使用雄辩的模型吗?当然。只需遵循or的语法即可。我添加了真实的表名和列以及它们受人尊敬的模型和关系,我使用X&Y只是为了使其更简单,而不是太复杂。不,我没有有效的方法来测试这一点,但我稍后会尝试,看看它是否有效。我几乎可以肯定,它可以从您显示的代码中工作。如果没有,请告诉我。
4,mango
class Good extends Model
{        
     /**
     * Get the Imported Goods for this Good.
     */
    public function imported_goods()
    {
        return $this->hasMany('App\Models\Imported_good','good_id');
    }
}
class Imported_good extends Model
{
    /**
     * Get the Good info for this Imported Good.
     */
    public function good()
    {
        return $this->belongsTo('App\Models\Good','good_id');
    }
}
// Parent.php model 
public function children()
{
    return $this->hasMany(Child::class);
}

// than somewhere in controller
$parents = Parent::doesntHave('children')->get();