Предоставить ссылку на страницу в laravel - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть база вопросов, которые просматриваются в localhost: 8000 / questions / {id}.Я создал чат-бота в существующем проекте laravel.Теперь я хочу предоставить пользователю ссылку на вопрос.Например, если я хочу ссылку на вопрос с id = 55, тогда бот должен ответить мне ссылкой localhost: 8000 / questions / 55.Как мне это сделать?

web.php

Route::resources([ 'questions' => 'QuestionController', ]); 
Route::match(['get', 'post'], '/botman', 'BotManController@handle'); 

QuestionController.php

public function show(Question $question) { 
    return view('question')->with('question', $question); 
} 

botman.php

use BotMan\BotMan\BotMan; 
use BotMan\BotMan\BotManFactory; 
use BotMan\BotMan\Cache\DoctrineCache; 
use BotMan\BotMan\Drivers\DriverManager; 
use App\Conversations\StartConversation; 

DriverManager::loadDriver(\BotMan\Drivers\Web\WebDriver::class); 
$cachedriver = new Doctrine\Common\Cache\PhpFileCache('cache'); 
BotManFactory::create(config('botman', new 
DoctrineCache($cachedriver))); 
$botman = app('botman'); 
$botman->hears('Hello|Hi', 
       function($bot) { 
          $bot->typesAndWaits(1); 
          $bot->startConversation(new StartConversation); 
       }
);

BotManController.php

<?php 

namespace App\Http\Controllers;

use Illuminate\Http\Request; 
use BotMan\BotMan\BotMan; 
use BotMan\BotMan\BotManFactory;
use BotMan\BotMan\Messages\Conversations;
use App\Conversations\StartConversation; 

class BotManController extends Controller { 
    public function handle() { 
        $botman = app('botman'); 
        $botman->listen(); 
    } 
    public function startConversation(Botman $bot) { 
        $bot->startConversation(new StartConversation()); 
    }
}

1 Ответ

0 голосов
/ 12 декабря 2018

сначала мы получаем все идентификаторы из таблицы вопросов:

$questions   = DB::table('questions')->select('id')->where('body', 'like', '%' . $answer . '%')->get();

$ ids - это коллекция идентификаторов, поэтому для каждого идентификатора мы должны создать ссылку:

$links = array();
foreach($questions as $question){
     $links[] = route('questions.show', ['id' => $question->id]);
}

так что теперь у нас есть все ссылки, необходимые для возврата в качестве ответа, завершите его, используя $this->say ... как вы хотите


вы можете вернуть первую ссылку, а не все ссылки, а затем получить первый идентификатор избазу данных и создайте ссылку, используя ее:

$question = DB::table('questions')->select('id')->where('body', 'like', '%' . $answer . '%')->first()
$link = route('questions.show', ['id' => $question->id]);

, затем верните ответ, используя $this->say

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...