Php 雄辩-使用关系的结束语
我有这个问题,拉雷维尔雄辩。 我有两个模型-为了简单起见,命名为:Php 雄辩-使用关系的结束语,php,laravel,eloquent,Php,Laravel,Eloquent,我有这个问题,拉雷维尔雄辩。 我有两个模型-为了简单起见,命名为: A(身份证、姓名) B(id,a_id,创建时) 关系:A有很多B 我需要返回按以下条件筛选的所有B记录: $allB = B::whereHas('a', function (Builder $query) { $query->where('A.name', $givenName); })->where('created_at','>=',$givenDate)-
- A(身份证、姓名)
- B(id,a_id,创建时)
- 关系:A有很多B
$allB = B::whereHas('a', function (Builder $query) {
$query->where('A.name', $givenName);
})->where('created_at','>=',$givenDate)->get();
- A.name=给定的名称
- B.在>=给定日期创建
public function user()
{
return $this->belongsTo('App\User')->withDefault(function ($user, $post) {
$user->name = 'Guest Author';
});
}
function (Builder $builder) {
$builder->where('age', '>', 200);
}
您可以使用whereHas执行此操作,但是首先需要在模型中定义关系,如下所示: 模型
class A extends Model
{
/**
* Get all B for the A.
*/
public function b()
{
return $this->hasMany(B::class);
}
}
B型
class B extends Model
{
/**
* Get the B's A.
*/
public function a()
{
return $this->belongsTo(A::class);
}
}
现在,在定义关系之后,只需使用带有闭包的whereHas
来检查额外条件:
$allB = B::whereHas('a', function (Builder $query) {
$query->where('A.name', $givenName);
})->where('created_at','>=',$givenDate)->get();
您可以使用whereHas执行此操作,但是首先需要在模型中定义关系,如下所示: 模型
class A extends Model
{
/**
* Get all B for the A.
*/
public function b()
{
return $this->hasMany(B::class);
}
}
B型
class B extends Model
{
/**
* Get the B's A.
*/
public function a()
{
return $this->belongsTo(A::class);
}
}
现在,在定义关系之后,只需使用带有闭包的whereHas
来检查额外条件:
$allB = B::whereHas('a', function (Builder $query) {
$query->where('A.name', $givenName);
})->where('created_at','>=',$givenDate)->get();
你需要把这个写在模型上
class A extends Model
{
public function aToB()
{
return $this->hasMany('App\B', 'a_id', 'id');
}
}
然后您需要编写查询
$userData = A::where('name', $givenName)->with('aToB');
$userData = $userData->whereHas('aToB', function($query) use($givenDate){
$query->whereDate('created_at', date('Y-m-d', strtotime($givenDate)));
});
$userData = $userData->get();
dd($userData->aToB);
你需要把这个写在模型上
class A extends Model
{
public function aToB()
{
return $this->hasMany('App\B', 'a_id', 'id');
}
}
然后您需要编写查询
$userData = A::where('name', $givenName)->with('aToB');
$userData = $userData->whereHas('aToB', function($query) use($givenDate){
$query->whereDate('created_at', date('Y-m-d', strtotime($givenDate)));
});
$userData = $userData->get();
dd($userData->aToB);