繁体   English   中英

SQL select 如果与另一个表中的值不同,则显示表(Laravel)

[英]SQL select show table if not same value from another table (Laravel)

这是我的查询,我试过这个查询它有效。

SELECT * 
FROM conference_venue 
WHERE id_venue NOT IN (SELECT id_venue FROM submission_data WHERE id_submission = 1);

我想在conference_venue 中显示数据。 但我不想显示 id_venue 与 submit_data 表相同的数据(与提到 id_submission 的 id_venue 相同)。

我正在尝试查询 laravel 版本,但它是一个没有错误的空白屏幕。

DB::table('conference_venue')
    ->whereNotIn('id_venue', function($q){
      $q->select('id_venue')
      ->from('submission_data')
      ->where('id_submission', '=', 1);
    })->select('*')->get();

当我在 sql 查询控制台中尝试时,此查询有效,但在我使用 Laravel 查询生成器尝试时失败。

你可以试试这个:

DB::table('conference_venue')
->select('*')
->whereRaw(
'conference_venue.id_venue NOT IN (SELECT submission_data.id_venue FROM submission_data WHERE id_submission = 1)'
)

或者更好的是,为conference_venue和 submit_data 创建一个submission_data (即: ConferenceVenueSubmissionData ),您可以为ConferenceVenueSubmissionData添加 Eloquent 关系。

Eloquent 关系支持各种常见关系(一对一、一对多、多对多等),被定义为 Eloquent model 类上的方法。 由于关系还可以作为强大的查询构建器,将关系定义为方法提供了强大的方法链接和查询能力。 (参考: https://laravel.com/docs/8.x/eloquent-relationships

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM