【问题标题】:How to get a particular column value by using Eloquent ORM?如何使用 Eloquent ORM 获取特定列的值?
【发布时间】:2021-11-28 09:23:47
【问题描述】:

我有两个迁移表和两个模型

1) 用户。 2)订阅。

在订阅模型中,我编写了一个名为 user() 的方法,它具有 hasMany 关系,而在用户模型中,它将包含具有 belongs() 关系的订阅 () 方法。

在用户表 id 中充当主键,在订阅表中 sub_id 充当外键,例如,如果用户订阅了任何订阅,则用户 id 将存储在订阅表中的 sub_id 中,直到它工作正常。

 $is_subscription=Subscription::where('sub_id',$user->id)->value('sub_id');

从上面的代码我可以得到值,但现在我想要的是有没有更好的方法来编写基于模型的查询,请帮我写这个..

【问题讨论】:

  • 你想达到什么目的?是否要检查用户是否有任何订阅?
  • @KevinBui,是的,我正在为此努力

标签: php laravel eloquent orm laravel-migrations


【解决方案1】:

根据您的描述,我相信您拥有的是这样的:

class User extends Model
{
    public function subscriptions()
    {
        return $this->hasMany(Subscription::class);
    }
}

class Subscription extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

因此,您想检查用户是否有任何订阅。您可以执行以下操作之一:

$user->subscriptions()->exists();

// Or

$user->subscriptions->isNotEmpty();

【讨论】:

    【解决方案2】:

    你可以使用pluck()方法:

    $is_subscription=Subscription::where('sub_id',$user->id)->pluck('sub_id');
    

    您可以使用Laravel Documentation找到有关可用于收集的方法的详细信息

    【讨论】:

    • 有什么方法可以使用 Eloquent ORM 概念我对 laravel @Romantic Dev 很陌生
    • 其实已经是一个 Eloquent ORM 查询了。详细告诉我们您想做什么。
    • 实际上我需要的是从其他模型中获取一个相关模型的数据
    • 在我的用户模型中我有这样的:->public function subscriptions() { return $this->hasMany(Subscription::class); }
    • 使用 whereHas。 $ss = User::whereHas('subscriptions', function (Builder $query) { $query->where('psub_id', $item->id); }) ->first();
    猜你喜欢
    • 1970-01-01
    • 2019-11-05
    • 2015-03-02
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 2021-04-12
    相关资源
    最近更新 更多