【问题标题】:Laravel / Eloquent : hasManyThrough questionLaravel / Eloquent : hasManyThrough 问题
【发布时间】:2020-03-07 14:23:01
【问题描述】:

我有 3 张桌子: 合同,带身份证 Contract_User,带有contract_id和user_id 用户,有 id

当我有合同时,我正在尝试使用 hasManyThrought 来获取用户信息,但我遇到了问题。

有可能吗? 谢谢

【问题讨论】:

  • 这不是hasManyThrough(),这是一个简单的belongsToMany()laravel.com/docs/5.8/eloquent-relationships#many-to-many。当您有 2 个模型和它们之间的轴时,它是 many-to-many。发布您的模型(ContractUser)和您的关系(在 Contractpublic function users() 和 int Userpublic function contracts()

标签: php laravel eloquent


【解决方案1】:

我同意蒂姆·刘易斯的观点。我认为这只是一个“简单”的BelongsToMany。根据您的模型的外观,以下是它们可能/应该是什么样子的示例。

如果您使用的不是默认外键,则需要提供这些列作为额外参数。您也可以在上面的链接中找到更多相关信息。希望这会有所帮助!

User.php

/**
 * The contracts that belong to the user.
 */
public function contracts()
{
    return $this->belongsToMany('App\Contract');
}

Contract.php

/**
 * The users that belong to the contract.
 */
public function users()
{
    return $this->belongsToMany('App\User');
}

然后在您的控制器中的某个地方,您可以通过以下方式获取用户的合同:

$user = App\User::find(1);

foreach ($user->contracts as $contract) {
    // $contract->name;
}

【讨论】:

    猜你喜欢
    • 2014-08-14
    • 2022-12-06
    • 2016-09-24
    • 2020-10-14
    • 2016-08-21
    • 2015-05-29
    • 2016-09-26
    • 2019-03-26
    • 2015-07-27
    相关资源
    最近更新 更多