首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拉勒维尔雄辩的关系--与1张表格相关的2张表格

拉勒维尔雄辩的关系--与1张表格相关的2张表格
EN

Stack Overflow用户
提问于 2017-11-10 08:31:29
回答 1查看 3.4K关注 0票数 0

我的数据库里有三张桌子。候选人,评委和分数。

现在,我要做的是去获取、查询或显示那些还没有被评委打分的候选人。

在基本php中,我们可以使用sql查询来查询,如

select * from scores where candidateId='1' and judgeId='2'

有谁能帮我解决拉勒维尔雄辩的关系?

EN

Stack Overflow用户

发布于 2017-11-10 09:11:40

对于这个简单的查询,您不需要雄辩的关系,只需使用Model:

代码语言:javascript
运行
复制
$scores = Score::where(['candidateId' => 1, 'judgeId' => 2])->get();

但是,如果你想用关系来做这件事,你必须首先在你的分数模型中定义关系:

代码语言:javascript
运行
复制
class Score extends Model {
    protected $table = 'scores';
    public function candidate() {
        return $this->belongsTo(Candidate::class, 'candidateId');
    }
    public function judge() {
        return $this->belongsTo(Judge::class, 'judgeId');
    }
}

然后您可以使用以下关系进行查询:

代码语言:javascript
运行
复制
$candidateId = 1;
$judgeId = 2;
$scores = Score::whereHas('candidate', function($query) use ($candidateId) {
    $query->where('id', $candidateId);
})->whereHas('judge', function ($query) use ($judgeId) {
    $query->where('id', $judgeId);
})->get();

更新1:如果您想获得每个候选人的分数,您可以在您的候选人中定义关系:

代码语言:javascript
运行
复制
class Candidate extends Model {
    protected $table = 'candidates';
    public function scores() {
        return $this->hasMany(Score::class, 'candidateId');
    }
}

然后找出候选人及其分数:

代码语言:javascript
运行
复制
$candidate = Candidate::find(1);
$scores = $candidate->scores;

您可以将$candidate传递到视图并在视图中获得分数,但不建议在视图中执行查询。我的意思是不要打电话给候选人::找到(1)在你的观点,但$候选人->分数可以做内视图。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47218527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档