رفتن به مطلب
انجمن پشتیبانی لاراول ایران

هاست لاراول با پشتیبانی 24 ساعته و امکانات کامل از مدیرهاست

مهدی

سوالاتی در مورد کار با دیتابیس

Recommended Posts

با سلام.سوال اول اینکه آیا متدی هست که مثلا 5 تا بیشترین از یه فیلدیو بگیریم باهاش مثلا اگه یه فیلد بازدید داشته باشیم در دیتابیس 5 تا رکورد پربازدید بهمون بده؟و سوال دوم اینکه فیلدی مثل id که autoincreament وخودش به طور خودکار عدد میده مثلا اگه ما 10 تا رکود داشته باشیم و5 تا آخریو حذف کنیم رکورد بعدی خودکار idش میشه 11 که این نظم شماره ها رو بهم میریزه آیا روشی هست که بعدیش به جای 11 بشه 6؟

Share this post


Link to post
Share on other sites

در مورد سوال اول از متد orderBy میتونید استفاده کنید و بیشترین بازدیدها رو بگیرید مثلا 5 مطلب که بیشترین بازدید رو داشتن به شکل زیر

Articles::orderBy('نام ستون بازدید','desc')->take(5)->get();
// بجای نام ستون بازدید نام ستون جدول خودتون رو بذارید

در مورد سوال دوم هم بعد از حذف میتونید یه کوئری با دستور زیر اجرا کنید تا شمارش رو از ادامه انجام بده

ALTER TABLE table_name AUTO_INCREMENT=1
// بجای table_name نام جدول خودتون رو بذارید

 

Share this post


Link to post
Share on other sites
در در ۱۳۹۹/۲/۲۰ در 18:36، مهدی گفته است :

مشکل اول درست شد اما در مورد دومی چطوری میشه یه کوئری خام تو دیتابیس زد؟

 

منظورتون از کوئری خام یعنی چی یک مثال بزنید تا بهتر کمک کنیم.

 

Share this post


Link to post
Share on other sites

برای اجرای کوئری مد نظر ابتدا یک migration ایجاد و آنرا migrate نمایید. سپس بدنه تابع ()up را پاک و به جای آن کد زیر را قرار دهید.

public function up()
 {
        $statement = "ALTER TABLE table_name  AUTO_INCREMENT = 1000";
        \Illuminate\Support\Facades\DB::unprepared($statement);
}

بعد از اجرا، مقدار ستون id با مقدار اولیه 1000 شروع می شود. من در لاراول نسخه 6 کد بالا را آزمایش کردم و جواب گرفتم. برای اطلاع بیشتر می توانید به پیوند زیر مراجعه نمایید.

https://stackoverflow.com/questions/34196045/set-auto-increment-field-start-from-1000-in-migration-laravel-5-1

در مورد کوئری اول هم می توانید از دستور زیر استفاده نمایید.

$records = DB::select('select * from user');
var_dump(records);

// using parameter
$records = DB::select('select * from user where id = ?', [3]);
var_dump(records);

امیدوارم که این پاسخ ها مشکل شما را حل کرده باشد.

موفق باشید.

Share this post


Link to post
Share on other sites

وارد این گفتگو شوید

میتوانید پیام خود را ارسال کنید و بعد ثبت نام نمایید. در صورتی که حساب کاربری دارید, هم اکنون وارد شوید و در این گفتگو شرکت کنید.

مهمان
پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  Only 75 emoji are allowed.

×   لینک شما به صورت اتوماتیک جایگذاری شد.   نمایش به عنوان یک لینک به جای

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • جدید...