Asked Jun 8th, 3:49 AM 209 0 2
  • 209 0 2
0

Hỏi về ý tưởng làm phân cấp phê duyệt

Share
  • 209 0 2

Hiện tại mình có data như này, làm sao để sắp xếp cái dữ liệu ở data bên kia vào trong cột level kia theo thứu tự được vậy ạ. Mn chỉ giúp mình với , cảm ơn ạ.

Nghiem Tuan @TuanLinhChi
Jun 8th, 3:56 AM

ý bạn là cho dữ liệu trong ảnh 2 sắp xếp rồi cho vào level của ảnh 1 ??

0
| Reply
Share
Hải Hà @HaiHaChan
Jun 8th, 3:58 AM

bạn show code bằng cách dùng cặp dấu 3 nháy như này nhé ```

chụp ảnh màn hình như vậy, người trả lời lại phải gõ code lại mệt lắm =))

0
| Reply
Share
duong van cong @duongvancong
Jun 8th, 5:53 AM

@TuanLinhChi đúng rồi b ạ lấy ra đươc luồng như ảnh 1 đó b

0
| Reply
Share
duong van cong @duongvancong
Jun 8th, 8:14 AM

@HaiHaChan bạn chỉ mình hướng làm với

array:3 [
  0 => array:4 [
    "id" => 8
    "parent_id" => 4
    "position_leave" => "[{"1":"1"}]"
    "rank_id" => 5
  ]
  1 => array:4 [
    "id" => 4
    "parent_id" => 2
    "position_leave" => "["4"]"
    "rank_id" => 4
  ]
  2 => array:4 [
    "id" => 2
    "parent_id" => 1
    "position_leave" => "[{"1":"1"}]"
    "rank_id" => 3
  ]
]
0
| Reply
Share
duong van cong @duongvancong
Jun 8th, 9:27 AM
duong van cong @duongvancong
Jun 8th, 9:28 AM

@TuanLinhChi bạn có ý tưởng nào không

0
| Reply
Share

2 ANSWERS


Answered Jun 8th, 4:14 AM
Accepted
+4

Nếu là php thuần thì bạn có thể dùng đệ quy để lấy ra -> hoàn toàn khả thi để lấy ra.

<?php
$array = [
    [
        'id' => 8,
        'parent_id' => 4,
    ],
    [
        'id' => 4,
        'parent_id' => 2,
    ],
    [
        'id' => 2,
        'parent_id' => 1,
    ]
];
		  
		  
   function buildTree(array $elements, $parentId = 0) {
    
	    $branch = array();

            foreach ($elements as $element) 
        	{
                if ($element['parent_id'] == $parentId) 
        		{
                    $children = buildTree($elements, $element['id']);
                    
        			if ($children) 
        			{
                        $element['children'] = $children;
                    }
        			
        			$branch[] = $element;
                }
            }
        
            return $branch;
        }
        
$result = buildTree($array, 2);

print_r($result);

Mình nghĩ bạn đang dùng laravel thì bạn thử dùng recursive relations:

public function childrenLevel()
{
    return $this->hasMany('levels', 'parent_id', 'id')->with('childrenLevel');
}
// Use
Level::find(2)->childrenLevel();

Ý tưởng như thế. Bạn tùy biến cho phù hợp với model của bạn nhé

Share
duong van cong @duongvancong
Jun 8th, 8:29 AM

ý bạn là như này phải không ạ.

public function parent()
    {
        return $this->belongsTo(User::class, 'parent_id', 'id');
    }

    public function children()
    {
        return $this->hasMany(User::class, 'parent_id', 'id');
    }
0
| Reply
Share
Phạm Tuấn Anh @phamtuananh760
Jun 8th, 8:35 AM

@duongvancong Đúng rồi bạn

public function children()
{
    return $this->hasMany(User::class, 'parent_id', 'id')->with('children');
}

Bạn thử xem có ok không

0
| Reply
Share
duong van cong @duongvancong
Jun 8th, 8:39 AM
id_user:2, 
  status: "",
  description: "",
  date: "",
  isComplete: "",
  level: [
      id_user: 3, 
      status: "",
      description: "",
      date: "",
      isComplete: "",
      level: [
            id_user: 4, 
            status: "",
            description: "",
            date: "",
            isComplete: "",
            level: []
        ]
    }

bạn có ý tưởng nào cho phần này không ạ, chỉ mình với , hiện tại mình có mảng data như trên giờ muốn sắp xếp để cấp dưới gửi lên cấp trên phê duyệt

0
| Reply
Share
Phạm Tuấn Anh @phamtuananh760
Jun 8th, 8:52 AM

Bạn có thể nói dõ hơn không ạ. Bằng cách đặt câu hỏi mơi trên viblo. để mọi người tiện vào giúp đỡ ạ

0
| Reply
Share
duong van cong @duongvancong
Jun 8th, 9:30 AM

@phamtuananh760 bạn ơi sao lại ->with('children')

0
| Reply
Share
Phạm Tuấn Anh @phamtuananh760
Jun 8th, 9:43 AM

@duongvancong Vì mỗi children mình lại muốn load thêm ra children của nó ấy. Nếu bạn không ->with('children') thì chỉ lấy đk thằng con thôi. không lấy đk cháu chắt của nó ấy bạn. bạn cứ thử chạy code lên xem nhé

0
| Reply
Share
duong van cong @duongvancong
Jun 8th, 2:34 PM

@phamtuananh760 mình chạy không được b ạ

0
| Reply
Share
Phạm Tuấn Anh @phamtuananh760
Jun 8th, 3:32 PM

@duongvancong bạn có thể cho mình xem code đk k ạ. không thì bạn thử dùng cách dùng hàm đệ quy bên trên xem được không

0
| Reply
Share
duong van cong @duongvancong
Jun 8th, 3:40 PM

@phamtuananh760 ở trên mình có data ở trong ảnh đó ạ, hay bạn cho mình skype hay facebook mình add mình hỏi b 1 chút được không ạ

0
| Reply
Share
Phạm Tuấn Anh @phamtuananh760
Jun 9th, 9:32 AM

@duongvancong facebook của minh nhé

0
| Reply
Share
Answered Jun 8th, 3:57 AM
+1

Mấy level này của bạn là các item khác cùng loại nhỉ? Sao bạn k lưu level là id của item, mà lưu lại dữ liệu cùng cấu trúc vậy?

Share
duong van cong @duongvancong
Jun 8th, 8:39 AM

hiện tại mình có mảng data như trên giờ muốn sắp xếp để cấp dưới gửi lên cấp trên phê duyệt, bạn có ý tưởng gì không ạ

0
| Reply
Share
Hải Hà @HaiHaChan
Jun 8th, 9:34 AM

@duongvancong bạn @phamtuananh760 support bạn rồi đó, bạn thử xem có oke k

0
| Reply
Share
duong van cong @duongvancong
Jun 8th, 3:06 PM

@HaiHaChan phần đệ quy php đấy ạ

+1
| Reply
Share