我想知道如何获得孩子在laravel模型中拥有的所有兄弟姐妹吗?
我知道我可以使用此$siblings = \App\Child::all()->where('parent_id', $parent_id)->where('id', $id);
来获取所有孩子兄弟姐妹,但是我想知道我是否可以采用其他方法或更干净的方法?
因此,您可以在刀片视图$child->siblings->full_name
中调用类似的名称。
但是我不知道如何在model.php中使用类似的东西
public function parent()
{
return $this->belongsTo(User::class);
}
仅使用belongsTo
或hasMany
函数,是否有可能?
抱歉,我的英语不好,所以我不知道它叫什么,所以我可以在Google上搜索它。
编辑::添加Child.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Carbon\Carbon;
class Child extends Model
{
protected $guarded = [];
protected $dates = [
'birthdate',
'father_birthdate',
'mother_birthdate',
'guardian_birthdate',
];
public function parent()
{
return $this->belongsTo(User::class);
}
// I want to call this function only using $child->siblings (this one will show all the siblings)
// without passing the parent id
// to make it cleaner
public function siblings($parent_id)
{
return $this->all()->where('parent_id', $parent_id);
}
public function getAgeAttribute()
{
return Carbon::parse($this->attributes['birthdate'])->age;
}
public function getFullNameAttribute()
{
return $this->attributes['first_name'] . ' ' . $this->attributes['last_name'];
}
}
答案 0 :(得分:0)
您可以通过2种方式完成此操作。
1创建以下方法:
public function sibling()
{
return $this->belongsTo(User::class)->where('parent_id', $this->parent_id);
}
2使用一个查询:
$siblings = \App\Child::where('parent_id', $parent_id)->get();
希望这会有所帮助
更新
第三种方式是:
public function scopeSiblings($query, $parent_id) {
return $query->where('parent_id', $parent_id)->get();
}