访问Laravel中的表数据

时间:2018-03-10 19:34:08

标签: php laravel laravel-5

我正在尝试显示已登录用户的联系人列表。但显然我做错了。

我在联系人列表页面上收到错误:

  

尝试获取非对象的属性“名称”

user.php的

public function contacts()
    {
        return $this->belongsToMany(Contact::class);
    }


Contact.php

public function users()
    {
        return $this->belongsToMany(User::class);
    }


ContactsController.php

public function index()
    {
        //
        $user = Auth::user();
        $user_contacts = $user->contacts()
        return view('contacts.list')->with('contacts', $user_contacts);
    }

list.blade.php

@foreach ($contacts as $contact)
    * {{ $contact->name }} <br>
@endforeach

<小时/> 表模式:
联系人:

  • ID
  • created_at
  • 的updated_at
  • 名称
  • 地址

用户:

  • ID
  • 名称
  • 密码
  • remember_token
  • created_at
  • 的updated_at

contact_user:

  • CONTACT_ID
  • USER_ID

3 个答案:

答案 0 :(得分:2)

如果您想访问多对多关系表的数据透视属性,可以使用pivot访问

    @foreach ($contacts as $contact)
       * {{ $contact->pivot->name }} <br>
    @endforeach

还会在联系人与用户之间建立关系

public function contacts()
{
    return $this->belongsToMany(Contat::class)->withPivot(['your', 'pivot','columns']);

}

希望这有帮助

答案 1 :(得分:0)

您必须按照以下关系返回数据透视表的数据:

public function contacts()
{
    return $this->belongsToMany(Contat::class)->withPivot(['your', 'pivot','columns']);

}

你必须得到如下的关系数据:

$user_contacts = $user->contacts // Not $user->contacts()

答案 2 :(得分:0)

在您的控制器中,您有以下内容;

public function index()
{
    $user = Auth::user();
    $user_contacts = $user->contacts()
    return view('contacts.list')->with('contacts', $user_contacts);
}

需要如下;

public function index()
{
    $user = Auth::user();
    $user_contacts = $user->contacts
    return view('contacts.list')->with('contacts', $user_contacts);
}

使用$user->contacts()(方法)将返回该关系的查询构建器实例,其中$user->contacts(属性)将返回一个包含select查询结果的集合。