我有一个类别表,其中存储了我的类别及其标题和缩略图。
我有另一张存储图像的表格。
第三个表是联合表。我存储在它的每个记录中,图像的id和类别的id。
表架构:
id
cat_id
item_id
现在我想通过query_string获取cat_id,然后将其传递给函数,以获取数据库中具有此类别的所有图像的列表。
我对如何编写方法感到困惑。我为CategoryList模型编写了以下方法,该方法抛出错误:
class CategoryList extends Eloquent
{
protected $table = "categories_list";
function Images ()
{
return $this->hasMany("Image", 'id');
}
}
以下是Image模型中的用法:
return CategoryList::Images()->where("cat_id", '=', $catid)->get()->toArray();
但它会引发以下错误:
{"error":{"type":"Illuminate\\Database\\QueryException","message":"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'cat_id' in 'where clause' (SQL: select * from `images` where `images`.`id` is null and `cat_id` = 19)","file":"C:\\wamp\\www\\aone\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Connection.php","line":539}}
答案 0 :(得分:1)
class Category extends Eloquent {
public function images()
{
return $this->belongsToMany('Image');
}
}
然后做:
$images= Categorie::find($catid)->images;
在这种情况下,您的数据透视表是'category_image',但如果您需要选择其他名称,则必须指定
return $this->belongsToMany('Image', 'your_pivot_table_name', 'cat_id', 'item_id');