Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
属于与laravel中的json列的关系_Laravel - Fatal编程技术网

属于与laravel中的json列的关系

属于与laravel中的json列的关系,laravel,Laravel,这是一个很棒的软件包: 但我不能 让它在几天的奋斗中发挥作用。让我解释一下我的情况 还有我的方法 orders表的json类型列名为sender\u address,具有以下值: { "title":"office", "street":"Mohakhali Flyover", "lat":"23.7794099", "lng":"

这是一个很棒的软件包: 但我不能 让它在几天的奋斗中发挥作用。让我解释一下我的情况 还有我的方法

orders表的json类型列名为
sender\u address
,具有以下值:

{
  "title":"office",
  "street":"Mohakhali Flyover",
  "lat":"23.7794099",
  "lng":"90.3983494",
  "district":"1",
  "area":"2"
}
我的订单型号定义:

class Order extends Model
{
  use \Staudenmeir\EloquentJsonRelations\HasJsonRelationships;
    /**
     * @var string The database table used by the model.
     */
    public $table = 'orders';

    /**
     * @var array Validation rules
     */
    public $rules = [
    ];
    
    protected $casts = [
     "sender_address" => "array"
    ];

    public $belongsTo = [
        'client' => [ '\ItScholarBd\Api\Models\User'],
        'customer' => [ 'ItScholarBd\Order\Models\Customer'],
        'district' => [ 'ItScholarBd\Location\Models\District'],
        'clientArea' => [ '\ItScholarBd\Location\Models\Area','sender_address->area']
      ];
}
用法:

$records   =   Order::with(['client.company','clientArea'])->get();
在这里,我只想获得与
发件人地址->区域匹配的
\ItScholarBd\Location\Models\Area
数据。但是,
$records
显示以下数据:

Array
(
    [0] => Array
        (
            [id] => 1
            [number] => AWB2000001
            [sender_address] => Array
                (
                    [title] => office
                    [street] => Mohakhali Flyover
                    [lat] => 23.7794099
                    [lng] => 90.3983494
                    [district] => 1
                    [area] => 2
                )

            [client_id] => 309
      
            [client] => Array
                (
                    [id] => 309
                    [name] => client
                    [email] => client@gmail.com
                    [password] => $2y$10$BIQgKvOV4h0lWOO66W6CC.rCEnFB6c6mBCh3WF2t1eDFueEJmgb7y
                    [activation_code] => 
                    [persist_code] => $2y$10$1Njt/420DYIyW3azOYh9z./WwURdgFf.7JKCGE0jqjTQmBPK/nmSe
                    [reset_password_code] => 
                    [permissions] => 
                    [is_activated] => 1
                    [activated_at] => 2020-11-27 18:41:04
                    [last_login] => 2020-12-17 13:50:48
                    [created_at] => 2020-11-27 18:41:04
                    [updated_at] => 2020-12-17 13:50:48
                    [username] => client
                    [surname] => 
                    [deleted_at] => 
                    [last_seen] => 2020-12-17 16:55:42
                    [is_guest] => 0
                    [is_superuser] => 0
                    [phone] => 
                    [company] => Array
                        (
                            [id] => 4
                            [name] => Bracnect  Academy
                            [email] => academy@bracnet.net
                            [url] => https://academy.bracnet.net/
                            [phone] => 01708006884
                            [alt_phone] => 01709007885
                            [address] => mohakhali
                            [product_type] => Course
                            [created_at] => 2020-12-02 16:20:54
                            [updated_at] => 2020-12-02 16:22:23
                            [code] => bracnectacademy
                        )
                )

            [client_area] => 
        )

)

这里的客户端区域是空的。但是我将a记录所在的区域表翻了一番,其中id=2
。我的方法有什么问题?我为这个问题挣扎了两天。有什么想法吗?

我从未见过有人这样定义关系,也没有在文档中找到:

public $belongsTo = [
         'client' => [ '\ItScholarBd\Api\Models\User'],
         'customer' => [ 'ItScholarBd\Order\Models\Customer'],
         'district' => [ 'ItScholarBd\Location\Models\District'],
         'clientArea' => [ '\ItScholarBd\Location\Models\Area','sender_address->area']
       ];
我认为如果你这样定义关系:

public function clientArea(){
  return $this->belongsTo('\ItScholarBd\Location\Models\Area', 'sender_address->area');
}
它应该会起作用


不要忘记在区域模型中使用HasJsonRelationships特性。

非常感谢,亲爱的。我如何应用这种关系?是Order::with(['client.company'])-clientArea()->get()?订单::with(['client.company','clientrea'])->get()。您需要添加关系函数名。请检查此语句的返回值:Order::find(1)->clientrea。