Activerecord 具有非主键的yii2连接

Activerecord 具有非主键的yii2连接,activerecord,yii2,Activerecord,Yii2,我有两个表图书和类别,想加入图书类别 LEFT JOIN categories ON books.category_id = category.id Books::find() ->joinWith('category', true, 'LEFT JOIN'); 如何手动设置columsbooks.category\u id=category.id,因为它不是主键。您必须将关系添加到图书模型中,例如(因为我不知道您的关系类型,我添加了两个普通示例) 那么你应该可

我有两个表图书和类别,想加入图书类别

LEFT JOIN categories ON books.category_id = category.id

Books::find()
            ->joinWith('category', true, 'LEFT JOIN');

如何手动设置colums
books.category\u id=category.id
,因为它不是主键。

您必须将关系添加到图书模型中,例如(因为我不知道您的关系类型,我添加了两个普通示例)

那么你应该可以使用你的连接。 但我不知道以下问题(见链接)是否仍然合法(因为我总是添加主键)

此教程链接也有帮助

你说的“因为它不是主键”是什么意思???在
书籍
模型中显示您的
类别
关系。@soju我没有创建外键井,我看不出问题。。。在
书籍
模型中向我们显示您的
类别
关系……您完全可以将任何内容连接到任何内容,在
连接
子句的
部分有一个参数。
public function getCategory()
{
    return $this->hasOne(Category::className(), ['id' => 'category_id']);
}

public function getCategories()
{
    return $this->hasMany(Category::className(), ['id' => 'category_id']);
}