Join don';t合并联接yii2中的表字段

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

我在加入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
                [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-扎赫迪莫哈默德哦。。对不起,我错过了一件事。现在将更新我以前的回答谢谢你的回答,这是正确的工作我没有权限喜欢你的帖子谢谢你的回答,这是正确的工作我没有权限喜欢你的帖子