Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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_Database_Laravel_Eloquent_Relational Database - Fatal编程技术网

Php 按关系列对日进行分组

Php 按关系列对日进行分组,php,database,laravel,eloquent,relational-database,Php,Database,Laravel,Eloquent,Relational Database,在我的数据库中,我有一个listings表,它有一个category_id列,我也有一个categories表,每个列表可以有一个类别,但该类别可以在任意数量的列表中共享,我相信这意味着它是一个1:n关系,在我的模型中应该这样描述 class Category extends Model { protected $table = "categories"; protected $fillable = ['category']; public fun

在我的数据库中,我有一个listings表,它有一个category_id列,我也有一个categories表,每个列表可以有一个类别,但该类别可以在任意数量的列表中共享,我相信这意味着它是一个1:n关系,在我的模型中应该这样描述

class Category extends Model
{
    protected $table = "categories";

    protected $fillable = ['category'];

    public function listings() {
        return $this->belongsTo('App\Listing');
    }
}



    class Listing extends Model
    {
        use SoftDeletes, HasSlug;
    
        protected $fillable = [
            'name',
            'slug',
            'description',
            'booking_details',
            'cost',
            'active',
            'user_id',
            'category_id',
            'moderated'
        ];
    
    
        protected $appends = [
          'tagsList'
        ];
    
        public function category() {
            return $this->hasOne('App\Category');
        }
}
我想做的是将所有列表按类别id分组,所以我认为这是正确的

$cats = Category::with('listings')->get();

这将返回所有类别,但列表属性为空,但我可以看到列表具有匹配的类别id,因此它们应该与类别一起返回。

您的关系不正确。一个类别可以有许多列表

public function listings() {
    return $this->hasMany('App\Listing');
}

如果listings表包含category_id字段,则您的关系设置错误

上市公司应具备:

public function category() {
    return $this->belongsTo('App\Category');
}
public function listing() {
    return $this->hasOne('App\Listing');
}
public function category() {
    return $this->hasMany('App\Category');
}
public function listing() {
    return $this->belongsTo('App\Listing');
}
public function category() {
    return $this->belongsToMany('App\Category');
}
public function listing() {
    return $this->belongsToMany('App\Listing');
}
类别应包括:

public function category() {
    return $this->belongsTo('App\Category');
}
public function listing() {
    return $this->hasOne('App\Listing');
}
public function category() {
    return $this->hasMany('App\Category');
}
public function listing() {
    return $this->belongsTo('App\Listing');
}
public function category() {
    return $this->belongsToMany('App\Category');
}
public function listing() {
    return $this->belongsToMany('App\Listing');
}
正如在这里的另一个答案中所述,您还指定了一对多关系,因此您应该在categories表上有listing_id,而不是listings表上的category_id,然后:

上市公司应具备:

public function category() {
    return $this->belongsTo('App\Category');
}
public function listing() {
    return $this->hasOne('App\Listing');
}
public function category() {
    return $this->hasMany('App\Category');
}
public function listing() {
    return $this->belongsTo('App\Listing');
}
public function category() {
    return $this->belongsToMany('App\Category');
}
public function listing() {
    return $this->belongsToMany('App\Listing');
}
类别应包括:

public function category() {
    return $this->belongsTo('App\Category');
}
public function listing() {
    return $this->hasOne('App\Listing');
}
public function category() {
    return $this->hasMany('App\Category');
}
public function listing() {
    return $this->belongsTo('App\Listing');
}
public function category() {
    return $this->belongsToMany('App\Category');
}
public function listing() {
    return $this->belongsToMany('App\Listing');
}
此外,如果一个类别实际上不属于某个列表,则需要一个名为category_listing的透视表,该透视表具有listing_id、category_id,并且具有以下关系

上市公司应具备:

public function category() {
    return $this->belongsTo('App\Category');
}
public function listing() {
    return $this->hasOne('App\Listing');
}
public function category() {
    return $this->hasMany('App\Category');
}
public function listing() {
    return $this->belongsTo('App\Listing');
}
public function category() {
    return $this->belongsToMany('App\Category');
}
public function listing() {
    return $this->belongsToMany('App\Listing');
}
类别应包括:

public function category() {
    return $this->belongsTo('App\Category');
}
public function listing() {
    return $this->hasOne('App\Listing');
}
public function category() {
    return $this->hasMany('App\Category');
}
public function listing() {
    return $this->belongsTo('App\Listing');
}
public function category() {
    return $this->belongsToMany('App\Category');
}
public function listing() {
    return $this->belongsToMany('App\Listing');
}

如果你对我的回答有什么不明白的地方,请告诉我。这是正确的。