第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Laravel 6.x 本地高級(jí)字符串搜索

Laravel 6.x 本地高級(jí)字符串搜索

PHP
手掌心 2023-10-22 22:03:28
我有 Laravel 6.x,需要對 mariaDB 進(jìn)行高級(jí)搜索。我需要一個(gè)搜索來搜索所有包含特定字符串的列。例子:+----+-------+--------------+| id | name  | lastname     |+----+-------+--------------+| 1  | peter | peterjackson |+----+-------+--------------+| 2  | petery| hans         |+----+-------+--------------+| 3  | hans  | han          |+----+-------+--------------+| 4  | petty | bun          |+----+-------+--------------+搜索查詢:peter: 1peters: /pet: 1,2,3我已經(jīng)嘗試過 TNT 搜索,但它只搜索整個(gè)字符串是否相同。所以pet只會(huì)在 id=2 時(shí)觸發(fā)。TNT 搜索示例(Laravel Scout):People::search("pet")->get()*no records*People::search("peter")->get()record id 1 (id 2 not included)Algolia 搜索不是一個(gè)選項(xiàng),因?yàn)槲覠o法將數(shù)據(jù)外包到其他數(shù)據(jù)中心。
查看完整描述

1 回答

?
三國紛爭

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊

這是未經(jīng)測試的,當(dāng)然可以改進(jìn),但這應(yīng)該可以滿足您的要求:


將以下方法添加到您的模型中,或者更好的是添加到由所有其他模型擴(kuò)展的基本模型中:


/**

 * An array containing the names of all of this model's columns

 * @var []

 */

private $_columnNames = [];


/**

 * Get an array of info for the columns of the given connection and table

 * @return array

 */

public function columnInfo()

{

    return DB::connection($this->connection)->select(DB::raw('SHOW FULL COLUMNS FROM '.$this->table.';'));

}


/**

 * Get an array of all the column names for this db model

 * @return array

 */

public function getColumnNames()

{

    if (!$this->_columnNames) {

        $this->_columnNames = Arr::pluck($this->columnInfo(), 'Field');

    }

    return $this->_columnNames;

}


/**

 * Get all records where any table column is like the given value

 * @param string $value

 * @param array  $selectColumns An array of columns to return

 * @return \Illuminate\Database\Query\Builder

 */

public static function whereAnyColumnLike($value, $selectColumns)

{

    $queryColumns = (new self)->getColumnNames();

    $selectColumns = $selectColumns ?: $queryColumns;

    $query = self::select($selectColumns);

    foreach($queryColumns as $key => $column) {

        $function = $key === 0 ? 'where' : 'orWhere';

        $query->$function($column, 'LIKE', $value);

    }

    return $query;

}

然后你可以打電話SomeModel::whereAnyColumnLike('%pet%')->get();


查看完整回答
反對 回復(fù) 2023-10-22
  • 1 回答
  • 0 關(guān)注
  • 186 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)