我有这样的数据库帐户
联系人
-id
-account\u id账户通信
-id
-account\u id
和接触模型:
class Contact extends Model
{
public function Account()
{
return $this->belongsTo('App\Account');
}
public function AccountCommunication()
{
return $this->hasManyThrough( 'App\AccountCommunication','App\Account');
}
}
账户模型
class Account extends Model
{
public function AccountCommunication()
{
return $this->hasMany('App\AccountCommunication');
}
public function Contact()
{
return $this->hasMany('App\Contact');
}
}
会计沟通模式
class AccountCommunication extends Model
{
public function Account()
{
return $this->belongsToMany('App\Account');
}
}
在我的控制器上
class ContactController extends Controller
{
public function index()
{
$contacts = Contact::with('Account')->with('AccountCommunication')->paginate(10);
dd($contacts);
}
}
告诉我这个错误
SQLSTATE[42S22]:找不到列: 1054未知的列'accounts.contact_id'在'字段列表'(SQL:选择account_communications
.*,帐户
.contact_id
从account_communications
内连接>帐户
在帐户
上。id=account_communications
。account_id
其中帐户
。contact_id
in(20))
我认为您误解了HasManyThrough
关系,并将其与hasMany
混为一谈。若你们仅仅通过一个例子看一下laravel Hasmany,你们就会对它的实际用途有更好的了解
countries
id - integer
name - string
users
id - integer
country_id - integer --> here is the key role for countries posts
name - string
posts
id - integer
user_id - integer
title - string
因为你的结构和它的用途大不相同。两边都有账户id
,那你还在等什么?
只需通过account\u id
e.x映射即可
class Contact extends Model
{
public function Account()
{
return $this->belongsTo('App\Account');
}
public function AccountCommunication()
{
return $this->hasMany( 'App\AccountCommunication', 'account_id', 'account_id');
}
}