将原始SQL转换为Eloquent

时间:2015-05-05 16:27:35

标签: php laravel orm eloquent

请使用此查询帮助我。

SELECT d.date, d.id, d.message, u.username 
FROM dialogs d JOIN users u ON d.user_id = u.id 
AND d.is_deleted = 0 
WHERE d.id > ? ORDER BY d.id DESC LIMIT 30

有作者的消息。现在我使用DB :: select进行此查询,但需要类似:

Dialog::all(['date', 'id', 'message'])
            ->where('is_deleted', '=', 0)
            ->with('user')
            ->idDescending()
            ->take(30)
            ->get();

Laravel 4.2

小小的抱怨。仅当所选字段列表包含本地和外键时才有效。

Dialog::with('user') ->where('is_deleted', '=', 0) ->orderBy('id', 'desc') ->take(30) ->get(['date', 'id', 'message', 'user_id']);

public function user() { return $this->belongsTo('User')->select(['username', 'id']); }

如果没有密钥,则用户为空。

1 个答案:

答案 0 :(得分:0)

如果你的关系设置正确,这应该是好的:

$rows = Dialog::with('user') ->where('is_deleted', '=', 0) ->orderBy('id', 'desc') ->take(30) ->get(['date', 'id', 'message'])

您应该可以使用

访问该用户

foreach($rows as $row){ $row->user->username; }