【问题标题】:Laravel relationships between my models我的模型之间的 Laravel 关系
【发布时间】:2016-08-17 03:00:08
【问题描述】:

我有三张桌子:

用户

此表包含通常的用户数据。 ID、电子邮件、密码、用户名等

团队

Image of my teams table structure

成员

Image of my members table structure

我的成员表用于跟踪哪些用户属于哪些团队。

我正在尝试创建的是一条路线,当访问该路线时,会显示用户当前所属的所有团队。

这是我尝试过的:

团队.php

<?php

namespace EG;

use Illuminate\Database\Eloquent\Model;

class Team extends Model
{

    protected $table = 'teams';

    public function members()
    {
        return $this->hasMany('Member');
    }
}

会员.php

<?php

namespace EG;

use Illuminate\Database\Eloquent\Model;

class Member extends Model
{

    protected $table = 'members';

    public function teams()
    {
        return $this->belongsTo('Team');
    }
}

routes.php

Route::get('/test', function () {
    $member = EG\Member::where('user_id', '=', Auth::user()->id)->get();
    $teams = $member->teams;
    foreach($teams as $team) {
        echo $team->team_name."<br>";
    }
});

我在访问 /test 时收到此错误:

routes.php 第 94 行中的错误异常: 未定义属性:Illuminate\Database\Eloquent\Collection::$teams

为了让你们更好地理解我要创建的内容,我将按照程序执行以下操作:

$sql = “SELECT team_id FROM members WHERE user_id = ‘“.Auth::user()->id.”';”;
$result = mysqli_querry($conn, $sql);
while ($row = mysqli_fetch_assoc($result))
{
    $sql = “SELECT * FROM teams WHERE id = ‘“.$row[’team_id'].”';”;
    $result = mysqli_query($conn, $sql);
    while ($team = mysqli_fetch_assoc($result))
    {
        echo $team[’team_name’].”<br>”;
    }   
}

【问题讨论】:

    标签: php mysql database laravel model


    【解决方案1】:

    -&gt;get() 方法返回一个集合。

    如果您需要单个模型,请使用-&gt;first() 方法:

    $member = EG\Member::where('user_id', '=', Auth::user()->id)->first();
    

    【讨论】:

    • 谢谢,这似乎奏效了。我现在收到一个错误,说“团队”类不存在。我假设 Member.php 中的这一行有问题: return $this->belongsTo('Team');
    • 我已经解决了这个问题,我现在收到这个错误:为 foreach() 提供的参数无效
    • 修复第一个错误:return $this-&gt;belongsTo('App\Team');。试试这个来修复最近的错误:$teams = $member-&gt;teams()-&gt;get()
    • 好的,我现在没有错误,但页面只是空白
    • $member->teams()->get();实际上并没有返回任何数据。我需要在我的 hasMany 和 belongsTo 中定义外键吗?
    猜你喜欢
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 2016-02-06
    • 1970-01-01
    • 2021-06-08
    • 2019-05-07
    相关资源
    最近更新 更多