我正忙着与ActiveRecord合作。
$coupons = Coupon::find()
->select(['{{coupon}}.*','({{website}}.`websitename`) AS WebsiteName'])
->leftjoin('website', '`coupon`.`websiteid`=`website`.`websiteid`')
->limit(10)
->all();
这是连接查询,但它只填充“Coupon”类的属性/属性,这些属性/属性似乎是书籍。如何从其他表“网站”访问列?
<?php foreach ($coupons as $coupon): ?>
<li>
<?= $coupon->WebsiteName?><br>
</li>
<?php endforeach; ?>
这个抛出“unknownPropertyType”异常。
答案 0 :(得分:4)
将公共属性添加到优惠券类public $WebsiteName;
作为另一种选择,您可以通过在优惠券模型中定义relation来访问 WebsiteName :
public function getWebsite()
{
$this->hasOne(Website::classname(), ['websiteid' => 'websiteid']);
}
然后更改您的查询:
$coupons = Coupon::find()->with('website')->limit(10)->all();
然后访问属性:
<?php foreach ($coupons as $coupon): ?>
<li>
<?= $coupon->website->WebsiteName?><br>
</li>
<?php endforeach; ?>
答案 1 :(得分:0)
使用print_r($coupon)
查看您的模特的结构。要获得名称,您必须拨打以下内容:$coupon->website->Name
但我建议您使用链接hasOne / hasMany。 阅读详细信息here。