Join don';t合并联接yii2中的表字段
我在加入2表时遇到问题,当我执行blow code时,结果代码是正确的,但在结果中不显示票证中的pin字段Join don';t合并联接yii2中的表字段,join,yii2,Join,Yii2,我在加入2表时遇到问题,当我执行blow code时,结果代码是正确的,但在结果中不显示票证中的pin字段 $model = Ticket::find()->leftJoin(TicketPin::tableName(), 'ticket.id=ticket_pin.ticket_id and ticket_pin.user_id=1')->all(); [id] => 1 [user_id] => 1
$model = Ticket::find()->leftJoin(TicketPin::tableName(), 'ticket.id=ticket_pin.ticket_id and ticket_pin.user_id=1')->all();
[id] => 1
[user_id] => 1
[receiver_user_id] =>
[title] => بسش
[problem] => شسبس
[text] => سشب
[receiver] => 1
[priority] => 1
[status] => 4
[seen] =>
[online] =>
[created_at] => 1490588016
但是当我使用createCommand时,它会正确地显示结果,但是我需要使用ActiveRecord
Yii::$app->db->createCommand('SELECT * FROM ticket LEFT JOIN ticket_pin ON ticket.id=ticket_pin.ticket_id and ticket_pin.user_id=1 order by ticket.id DESC')->queryAll();
[id] =>
[user_id] =>
[reciver_user_id] => 1
[title] => سس
[problem] => afsfsa
[text] => sfaaf
[reciver] =>
[priority] => 1
[status] => 4
[seen] => 0
[online] =>
[{"user_id":2,"name":"\u0645\u062d\u0645\u062f","time":1491378729}]
[created_at] => 1491378692
[ticket_id] =>
[pin] =>
您无法从
Ticket
AR模型本身获取TicketPin
属性,但您可以从Ticket
关系访问TicketPin
(如果您实现了它,或者如果Gii为您制作了它)
如果Ticket有多个TicketPins,那么我认为,这种查询适合您的情况:
$tickets = Ticket::find()->joinWith(['ticketPins' => function(ActiveQuery $query) {
$query->andWhere(['ticket_pin.user_id' => 1]);
}])->all();
foreach($tickets as $ticket) {
foreach($ticket->ticketPins as $ticketPin) {
echo $ticketPin->pin //Something like that
}
}
因此,在解释这段代码时,您会得到内部带有急切加载的TicketPins的票证模型(user\u id=1
filtering包含在匿名函数中)。
抱歉,如果给定的代码包含一些错误。我相信您可以重新检查它并使其对您的项目有用您无法从
Ticket
AR模型本身获得TicketPin
属性,但您可以从Ticket
关系访问TicketPin
(如果您实现了它,或者如果Gii为您制作了它)
如果Ticket有多个TicketPins,那么我认为,这种查询适合您的情况:
$tickets = Ticket::find()->joinWith(['ticketPins' => function(ActiveQuery $query) {
$query->andWhere(['ticket_pin.user_id' => 1]);
}])->all();
foreach($tickets as $ticket) {
foreach($ticket->ticketPins as $ticketPin) {
echo $ticketPin->pin //Something like that
}
}
因此,在解释这段代码时,您会得到内部带有急切加载的TicketPins的票证模型(user\u id=1
filtering包含在匿名函数中)。
抱歉,如果给定的代码包含一些错误。我相信您可以通过下面的查询重新检查它,并使它对您的项目有用,您将获得
票证
模型属性。如果要在model中获取TicketPin属性,请在Ticket
model中定义它们
$model = Ticket::find()->leftJoin(TicketPin::tableName(), 'ticket.id=ticket_pin.ticket_id and ticket_pin.user_id=1')->all();
首先在票证模型类中定义如下属性:
public $pin; // assuming you need pin attribute
现在在查询添加选择语句中:
$model = Ticket::find()->select('ticket.*,ticket_pin.pin')->leftJoin(TicketPin::tableName(), 'ticket.id=ticket_pin.ticket_id and ticket_pin.user_id=1')->all();
现在您可以获得pin属性
->第二种方法是将查询输出作为数组,这样做不需要在模型中定义属性
$model = Ticket::find()->select('ticket.*,ticket_pin.pin')->leftJoin(TicketPin::tableName(), 'ticket.id=ticket_pin.ticket_id and ticket_pin.user_id=1')->asArray()->all();
通过下面的查询,您将获得Ticket
模型属性。如果要在
model中获取TicketPin属性,请在Ticket
model中定义它们
$model = Ticket::find()->leftJoin(TicketPin::tableName(), 'ticket.id=ticket_pin.ticket_id and ticket_pin.user_id=1')->all();
首先在票证模型类中定义如下属性:
public $pin; // assuming you need pin attribute
现在在查询添加选择语句中:
$model = Ticket::find()->select('ticket.*,ticket_pin.pin')->leftJoin(TicketPin::tableName(), 'ticket.id=ticket_pin.ticket_id and ticket_pin.user_id=1')->all();
现在您可以获得pin属性
->第二种方法是将查询输出作为数组,这样做不需要在模型中定义属性
$model = Ticket::find()->select('ticket.*,ticket_pin.pin')->leftJoin(TicketPin::tableName(), 'ticket.id=ticket_pin.ticket_id and ticket_pin.user_id=1')->asArray()->all();
谢谢你的建议,我做了,但有点问题。结果我在其他评论中提到,但问题是foreach($tickets as$ticket){echo$ticket->pin//类似的东西}获取未知属性:app\models\ticket::pin@mohammad-扎赫迪莫哈默德哦。。对不起,我错过了一件事。现在我会更新我以前的回答谢谢你的回答我这么做了但有一些问题。结果我在其他评论中提到,但问题是foreach($tickets as$ticket){echo$ticket->pin//类似的东西}获取未知属性:app\models\ticket::pin@mohammad-扎赫迪莫哈默德哦。。对不起,我错过了一件事。现在将更新我以前的回答谢谢你的回答,这是正确的工作我没有权限喜欢你的帖子谢谢你的回答,这是正确的工作我没有权限喜欢你的帖子