Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Laravel प्रत्येक समूह के लिए नवीनतम रिकॉर्ड प्राप्त करें

समान परिणाम प्राप्त करने के लिए आप अपनी क्वेरी को लेफ्ट जॉइन के रूप में फिर से लिख सकते हैं

select a.* 
from part_histories a
left join part_histories b on a.part_id = b.part_id 
                            and a.created_at < b.created_at
where b.part_id is null

और मुझे लगता है कि आप आसानी से उपरोक्त क्वेरी को अपने दायरे में कुछ इस तरह बदल सकते हैं

public function scopeWithLatestStatus($query)
{
    return $query->leftJoin('part_histories as b', function ($join) {
                $join->on('a.part_id', '=', 'b.part_id')
                     ->where('a.created_at', '<', 'b.created_at');
            })
        ->whereNull('b.part_id')
        ->from('part_histories as a')
        ->select('a.*');
}

Laravel Eloquent select अधिकतम create_at वाली सभी पंक्तियाँ

लारावेल - प्राप्त करें प्रत्येक UID प्रकार की अंतिम प्रविष्टि

लारवेल एलोक्वेंट ग्रुप नवीनतम रिकॉर्ड के अनुसार

उपरोक्त क्वेरी का उपयोग करके संपादित करें क्योंकि has संबंध, प्रत्येक भाग के लिए नवीनतम इतिहास प्राप्त करने के लिए आप एक hasOne define को परिभाषित कर सकते हैं संबंध जैसे

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class Part extends Model
{
    public function latest_history()
    {
        return $this->hasOne(\App\Models\PartHistory::class, 'part_id')
            ->leftJoin('part_histories as p1', function ($join) {
                $join->on('part_histories.part_id', '=', 'p1.part_id')
                    ->whereRaw(DB::raw('part_histories.created_at < p1.created_at'));
            })->whereNull('p1.part_id')
            ->select('part_histories.*');
    }
}

और फिर उनके नवीनतम इतिहास के साथ भागों को लोड करने के लिए आप

. के रूप में परिभाषित मानचित्रण के ऊपर लोड करने के लिए उत्सुक हो सकते हैं
$parts = Part::with('latest_history')->get();

आपके पास नवीनतम इतिहास के साथ-साथ भागों की एक सूची होगी

Array
(
    [0] => Array
        (
            [id] => 1
            [title] => P1
            [latest_history] => Array
                (
                    [id] => 6
                    [created_at] => 2018-06-16 08:25:10
                    [status] =>  1
                    [part_id] => 1
                )

        )
....
)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जावा से चलाने पर mysqldump कोड 6 देता है, लेकिन कमांड लाइन से वही कमांड ठीक काम करता है

  2. MySQL 5.7 पर मेटाडेटा लॉक, लॉकिंग प्रक्रिया नहीं मिल रही है?

  3. MySQL InnoDB तालिकाओं के बीच विदेशी कुंजी काम नहीं कर रही...क्यों?

  4. कैसीनो में 24/7 स्टाफ रोस्टर के लिए डेटाबेस मॉडल

  5. MySQL के विरुद्ध हाइबरनेट इकाई में मॉडलिंग UUID