【问题标题】:Handling JSON/Array fields in Eloquent [closed]在 Eloquent 中处理 JSON/数组字段 [关闭]
【发布时间】:2015-03-04 20:13:54
【问题描述】:

我正在使用 Laravel 创建 CRM。我希望帐户能够具有多个 account_types。在帐户类型表中会有一个 ID 和一个标题,然后在 Accounts 表中我计划有一个列来存储该帐户所属类型的 json 对象。

我正在寻找在 Laravel 中使用 Eloquent 处理此问题的正确方法,以将这些关联起来,并能够执行 $account->types() 之类的操作并返回帐户所属的帐户类型数组,即 IE

array(
    1 => 'Customer',
    3 => 'Vendor'
)

还可以执行Account::where('account_type', 1)->get(); 之类的操作并返回所有“客户”

我目前使用 MySQL 作为数据库,所以数组不是一个很好的选择。

【问题讨论】:

  • 你能显示你的 SQL 查询字符串吗
  • 如果你想使用 Eloquent 功能,那么只需创建数据透视表并使其成为 m-m 关系(两边都是belongsToMany)。然后可以调用$account->types获取所有类型。

标签: php mysql json laravel eloquent


【解决方案1】:

为了能够做到这一点,我将专门为帐户/类型关系创建第三个表,而不是表中的 json 对象。因此,假设您的表命名为 Account、Types 和 Account_Types,您可以通过以下方式获取特定帐户的所有类型:

Account_Types::select('title')
->where('accountID', '=', $account_id)
->get();

然后要获取特定类型的所有帐户,只需加入表并运行选择:

Account::join('account_types', 'account_types.accountID', '=', 'account.id')
->join('types', 'types.id', '=', 'account_types.typeID')
->select('account.id as id')
->where('types.id', '=', $type_id)
->get();

【讨论】:

    【解决方案2】:
    use Response;
    
    return Response::json(array('1' => 'Customer', '2' => 'Vendor'));
    

    details

    【讨论】:

      猜你喜欢
      • 2013-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      相关资源
      最近更新 更多