我有2个不同的mysql连接
1-mysql数据库
类别表 2-文章数据库
文章表 Articles_categories表 我尝试使用不同的mysql conacction与两个表建立关系
但是我得到一个错误:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'articles.categories' doesn't exist (SQL: select `categories`.*, `articles_categories`.`article_id` as `pivot_article_id`, `articles_categories`.`category_id` as `pivot_category_id` from `categories` inner join `articles_categories` on `categories`.`id` = `articles_categories`.`category_id` where `articles_categories`.`article_id` = 7)
categories db is inside mysql table and article and articles_categories is inside the articles db connaction
这是我的代码:
public function categories(){
return $this->belongsToMany('App\Models\Category','articles_categories','article_id','category_id');
我认为Laravel试图在Articles数据库中找到Categories表,但是category表位于mysql数据库中
谢谢
答案 0 :(得分:0)
首先,您需要明确指定其他模型的连接:
class Category extends Model {
protected $connection = 'mysql';
}
然后最好对数据透视表的名称非常明确:
public function categories(){
$defaultConnection = config("database.default");
$defaultDatabase = config("database.connections.$defaultConnection.database");
return $this- belongsToMany('App\Models\Category',"$defaultDatabase.articles_categories",'article_id','category_id');
}
这将尝试确保该关系在默认连接中使用articles_categories
表,而不在Category
中指定的连接中使用该表。