因此,在示例中,我有此文章表
inv
此文章表与用户表
具有+---------+----------------+------------+
| user_id | post | created_at |
+---------+----------------+------------+
| 0001 | some article | 2018-01-01 |
| 0002 | other article | 2018-01-01 |
| 0002 | some2 article | 2017-10-01 |
| 0003 | some2 article | 2017-10-01 |
+---------+----------------+------------+
关系
belongsTo
所以我想返回2018年1月1日发布的所有文章(created_at),然后它将返回所有这样的记录
+------+------+------------+
| id | name | deleted_at |
+------+------+------------+
| 0001 | yo | null |
| 0002 | yea | 2017-12-31 |
| 0003 | yes | null |
+------+------+------------+
现在,如果我也不想包括来自用户的文章,而该文章在早于等于2018-01-01之前已经具有delete_at值,则它将返回
+---------+----------------+------------+
| user_id | post | created_at |
+---------+----------------+------------+
| 0001 | some article | 2018-01-01 |
| 0002 | other article | 2018-01-01 |
+---------+----------------+------------+
到目前为止,现在一切正常,我在此问题中提出的另一种情况是,如果我在2017年10月1日参加文章,那么它应该返回
+---------+----------------+------------+
| user_id | post | created_at |
+---------+----------------+------------+
| 0001 | some article | 2018-01-01 |
+---------+----------------+------------+
因为那时用户0002尚未被+---------+----------------+------------+
| user_id | post | created_at |
+---------+----------------+------------+
| 0002 | some2 article | 2017-10-01 |
| 0003 | some2 article | 2017-10-01 |
+---------+----------------+------------+
删除,依此类推,因此应该将其包括在列表中。
如何在同一查询中获得这些结果?因此,当我使用在搜索日期之前尚未删除的用户搜索文章时,它将显示出来,但是当我使用在搜索日期之后删除的用户进行搜索时,它将不会显示...
我尝试过
user.deleted_at = 2017-12-31 vs article.created_at = 2017-10-01
将仅显示用户具有Deleted_at空值的文章...但是不知道如何将用户Deleted_at与搜索日期匹配
答案 0 :(得分:0)
尝试一下:
$table = Article::leftjoin('user','article.user_id','user.id')
->where('created_at',$search_date)
->where(function($query) use($search_date) {
$query->whereNull('user.deleted_at')
->orWhere('user.deleted_at', '<', $search_date);
})->get();