سلام دوستان گلم
من میخوام که از پریفیکس N توی کوئری هام استفاده کنم هم توی Insert و هم Select و هم Update اما میخوام این به صورت Active record باشه نه به صورت query ساده
مثلا به جایSELECT * FROM table WHERE name = N'علی'
سلام دوستان گلم
من میخوام که از پریفیکس N توی کوئری هام استفاده کنم هم توی Insert و هم Select و هم Update اما میخوام این به صورت Active record باشه نه به صورت query ساده
مثلا به جایSELECT * FROM table WHERE name = N'علی'
سلام
تا اونجایی که من میدونم همچین قابلیتی بصورت پیش فرض وجود نداره ولی میتونی یه فایل کانفیگ تعریف کنی prefix هارو توش ست کنی موقع کوئری نوشتن ازش استفاده کنی
$this->db->where($this->config_vars('fied_prefix').'field','ali');
توی فولدر cnfig یه فایل درست میکنی اسمش هرچی میتونه باشه
محتواش این شکلی
$config['field_prefix'] = 'my_fiel_prefix';
از این خط هرچقدر لازم داری میتونی کپی کنی و اسمشو عوض کنی مقدار جدید بهش بدی
نحوه استفاده هم
اول باید فایل کانفیگ و لود کنی (میتونی توی autoload هم بزاریش)
$this->config->load('filename');
نحوه فراخوانی ایتم ها هم به این شکل
$this->config->item('item_name');
با کلاس کانفیگ کار های بیشتری هم میشه کرد که میتونی از توی فایل راهنماش بخونی
https://www.codeigniter.com/userguide3/libraries/config.html
ممنون اما در نهایت مثلا توی یک Insert به صورت Active record چطوری باید از این استفاده کنم؟ میشه این قسمتشم توضیح بدین؟
اگر برای هر فیلد یک prefix اختصاصی تعریف کرده باشی این شکلی
$data = array(
$this->config->item('title').'title' => 'My title',
$this->config->item('name').'name' => 'My Name',
$this->config->item('date').'date' => 'My date'
);
$this->db->insert('mytable', $data);
اگر برای همه فیلد ها کلا یک prefix تعریف کردی بهتره قبل از استفاده تو کوئری انتصاب بدی به یه متغیر تا هر بار به آبجکت و متد ارجاع نده. اینجوری سرعت بالاتر میره
$prefix = $this->config->item('item_name') ;
سلام دوست عزیزم
فکر کنم منظورم رو اشتباه متوجه شدی، منظورم پریفیکس برای نام فیلد ها نبود منظورم پریفیکس N برای کوئری زدن برای مطالب فارسی بود
به صورت زیر
SELECT * FROM table WHERE name = N'علی'
این موضوع در SQL Server استفاده میشه برای محتوای UTF8
چون در فارسی و عربی ک و ی و اعداد کاراکترهاشون با هم فرق می کنند و هنگام کوئری زدن دچار مشکل میشیم، در ضمن من نمیتونم دیتاهای SQL Server رو هم تغییر بدم
الان به صورت this->db->query مشکلم رو حل کردم یعنی استفاده از کوئری که براتون نوشتم
اما من میخوام بتونم به صورت active record ان کار رو انجام بدم
الان متوجه منظورتون شدم
این مشکل بخاطر استفاده از نسخه قدیمی sql هست. شما الان یا از 2000 یا 2005 استفاده میکنی. اگر از نسخه 2016 استفاده کنی این مشکل حل شده و دیگه نیازی به پریفیکس نیست
توی کوئری insert و update میتونی از set استفاده کنی. پارامتر سوم و false بزار که از فیلتر نگذره
$this->db->set('field', 'N'.'\'ugd\'', FALSE);
توی کوئری select هم که شرط و بصورت string بنویس