列表和Sub_Category具有一对多关系。列表属于一个sub_category,而sub_category有很多列表。
我的列表表'sub_catgory_id'上有一列,并且我在关系中也指定了外键
Listing.php Model
public function sub_category()
{
return $this->belongsTo('App\Sub_Category', 'sub_category_id', 'id');
}
试图获取与子类别相关的所有列表
return $sub_category = \App\Sub_Category::with('listing')->get()
我收到此错误=>找不到列:1054“ where子句”中的未知列“ listings.sub__category_id”。
我知道有说服力的人正在检查sub__category_id(双下划线),但是我已经深入到这个项目中了,想将其保留为sub_category_id(单下划线)。关于如何实现的任何想法?
答案 0 :(得分:0)
我终于找到解决办法。您可以驼峰化您的模型。因此,在我的情况下,我将模型从Sub_Category重命名为subCategory,以便雄辩地检查sub_category_id。
答案 1 :(得分:0)
我认为您应该设置为:
1 .Listening.php:
public function sub_category()
{
return $this->belongsTo('App\Sub_Category', 'id', 'sub_category_id');
}
2.Sub_Category.php:
public function listing()
{
return $this->belongsTo('App\Listening', 'sub_category_id','id');
}
通过设置laravel document中的关系,我们首先设置 foreign_key ,然后设置 local_key (例如,从laravel网站获得示例):
return $this->hasOne('App\Phone', 'foreign_key', 'local_key');
答案 2 :(得分:0)
您可以尝试以下代码:
1.Sub_Category.php(Model)
public function listimg() {
return $this->belongsTo('App\Listening');
}
2.Contoller
$sub_category = \App\Sub_Category::with('listing')->get();
答案 3 :(得分:0)
对于自定义外键列,您已经为函数hasMany('Model', 'fk', 'pk')
传递了两个附加参数,即外键列名称和参考键列名称。
class Category extends Model
{
protected $table = 'categories';
public function contents(){
return $this->hasMany('App\Content', 'sub_cat_id', 'id');
}
}
class Content extends Model
{
//
protected $table = 'contents';
public function category(){
return $this->belongsTo('App\Category');
}
}
Schema::create('categories', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('user_id');
$table->integer('parent_id');
$table->string('title');
$table->timestamps();
});
Schema::create('contents', function (Blueprint $table) {
$table->bigIncrements('id');
$table->integer('app_id');
$table->integer('cat_id');
$table->bigInteger('sub_cat_id')->unsigned();
$table->integer('content_type');
$table->text('content');
$table->text('title');
$table->timestamps();
$table->foreign('sub_cat_id')->references('id')->
on('categories')->onDelete('cascade');
});