CodeIgniter Forums
Adding param with value to model - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: Using CodeIgniter (https://forum.codeigniter.com/forumdisplay.php?fid=5)
+--- Forum: General Help (https://forum.codeigniter.com/forumdisplay.php?fid=24)
+--- Thread: Adding param with value to model (/showthread.php?tid=82425)



Adding param with value to model - mazz - 07-08-2022

I am using CI4 and I have this code:
Code:
    $campaignUserModel = new CampaignUserModel();
    $subcontractors = $campaignUserModel
        ->select('campaigns_users.*, users.fullname user_fullname')
        ->join('users', 'users.id = campaigns_users.user_id')
        ->where('campaign_id', $id)
        ->findAll();

    $postModel = new PostModel();
    foreach ($subcontractors as $subcontractor) {
        $subcontractor_posts = $postModel
            ->where('user_id', $subcontractor['id'])
            ->where('campaign_id', $id)
            ->countAllResults();

        $subcontractor['posts_count'] = $subcontractor_posts;

        echo "<pre>";
        var_dump($subcontractor);
        echo "</pre>";
    }

    echo "<pre>";
    var_dump($subcontractors);
    echo "</pre>";

In first var_dump() I see:

array(7) {
  ["id"]=>
  string(1) "5"
  ["campaign_id"]=>
  string(1) "3"
  ["user_id"]=>
  string(1) "8"
  ["quantity"]=>
  string(1) "3"
  ["status"]=>
  string(1) "1"
  ["user_fullname"]=>
  string(19) "Kacper Podwykonawca"
  ["posts_count"]=>
  int(0)
}

so posts_count is added. But when foreach finished and I display second var_dump() with array of all subcontractor i can't see posts_count

Where am I making a mistake?


RE: Adding param with value to model - kenjis - 07-08-2022

$subcontractor and $subcontractors


RE: Adding param with value to model - iRedds - 07-09-2022

The $subcontractor variable is not related to the $subcontractors variable in any way.
But there are 3 ways how to solve.

1. Object.
$subcontractors must contain an array of objects.
PHP Code:
foreach ($subcontractors as $subcontractor) {
  
// ...
  
$subcontractor->posts_count $subcontractor_posts;


2. Reference.
Pass value by reference
PHP Code:
foreach ($subcontractors as &$subcontractor) {



3. Full path
Work with parent array
PHP Code:
foreach ($subcontractors as $key => $subcontractor) {
  
// ...
  
$subcontractors[$key]['posts_count'] = $subcontractor_posts;