Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拉威尔失配ID_Php_Mysql_Laravel - Fatal编程技术网

Php 拉威尔失配ID

Php 拉威尔失配ID,php,mysql,laravel,Php,Mysql,Laravel,我的网站目前有一个奇怪的错误,只显示在实时版本上,而不是在我的本地设置上 本质上,在这个场景中,用户试图向艺术家(另一种类型的用户)请求报价,因此使用了requestQuote函数 public function requestQuote(Request $request, AppMailer $mailer) { $reciUsername = $request->input('recipient'); $recipientID = User::where('user

我的网站目前有一个奇怪的错误,只显示在实时版本上,而不是在我的本地设置上

本质上,在这个场景中,用户试图向艺术家(另一种类型的用户)请求报价,因此使用了
requestQuote
函数

public function requestQuote(Request $request, AppMailer $mailer) { 

    $reciUsername = $request->input('recipient');
    $recipientID = User::where('username', $reciUsername)->value('id');
    $recipient = User::where('username', $reciUsername)->first();
    $active_commissions_count = Commission::where('artist_id', $recipientID)
            ->where('complete', 0)
            ->where('stripe_charge_id', '!=', "")
            ->where('stripe_charge_id', '!=', null)         
            ->count();

    $this->validate($request, [
        'message' => 'required|max:5000|min:10',
    ]);


    $message = Auth::user()->messages()->create([
        'body' => $request->input('message'),
        'subject' => 'Status: Commission requested!',
        'recipient_id' => $recipientID,
        'sender_read' => 1,
        'is_quote' => 1,
        'quote_expires' => Carbon\Carbon::now()->addWeeks(1),
    ]);

    $from = Auth::user()->username;
    $mailer->sendQuoteRequestEmailTo($recipient, $from);

     Auth::user()->update([
        'timeout' =>  Carbon\Carbon::now(),
     ]);        

    dd("Message ID: " . $message->id . " - Message User ID: " . $message->user_id);

    return redirect()->back()->with('info', 'Quote sent.');
}
这将创建一条消息,然后艺术家可以阅读该消息。在此场景中,
recipient\u id
用户是艺术家,
user\u id
用户是制作原始报价的人。在该交易过程中,这一点不应在任何时候发生变化

你会注意到那里的尽头有个垃圾场

在此场景中,dd返回

“报价请求-邮件ID:30-邮件用户ID:2-收件人ID:21”

太好了。到目前为止,一切正常,正确的消息被发送,正确的用户被显示为已经发送了报价

问题发生在艺术家回复报价时

public function quoteReply(Request $request, $messageId, AppMailer $mailer) {

    $this->validate($request, [
        "reply-{$messageId}" => 'max:5000',
        "price" => 'required|min:10|max:9999|numeric',
        "date" => 'required|date',
            ], [
        'max' => 'The text body has a maximum of 5000 characters.',
        'price.max' => 'Commissions have a maximum of 9999 US dollars.',
        'price.min' => 'Commissions have a minimum of 10 US dollars.',
    ]);

    $message = Message::notReply()->find($messageId);

    if (!$message) {
        return redirect()->route('home')->with('info', 'Something went wrong.');
    }

    $date = $request->input('date');
    $date2 = DateTime::createFromFormat('m/d/Y', $date);
    $date3 = $date2->format("Y-m-d");

    $reply = message::create([
                'body' => $request->input("reply-{$messageId}"),
                'sender_read' => 3,
                'reci_read' => 3,
            ])->user()->associate(Auth::user());

    Message::where('id', $messageId)->update([
        'updated_at' => Carbon\Carbon::now(),
        'subject' => 'Status: Price quote delivered.',
        'quoted' => 1,
        'price' => $request->input('price'),
        'estimated_date' => $date3,
        'quote_expires' => Carbon\Carbon::now()->addWeeks(1),
    ]);

    $userID = $message->value('user_id');
    $recipientID = $message->value('recipient_id');
    $user = User::where('id', $userID)->first();


    if (Auth::user()->id == $userID) {
        Message::where('id', $messageId)->update(['reci_read' => 0]);
    }

    if (Auth::user()->id == $recipientID) {
        Message::where('id', $messageId)->update(['sender_read' => 0]);
    }

    $message->replies()->save($reply);

    $from = Auth::user()->username;
    $mailer->sendQuoteReplyEmailTo($user, $from);       


    dd("QUOTE REPLY - Message ID: " . $message->id . " - Message User ID: " . $message->user_id . " - Message Recipient ID: " . $message->recipient_id . " - User ID: " . $user->id );

    return redirect()->back()->with('info', 'Price quote delivered.');
}
这将返回:

“报价回复-邮件ID:30-邮件用户ID:2-邮件收件人 ID:21-用户ID:3“

我第一次注意到这个问题是在错误的用户接收电子邮件时。事实上,收到电子邮件的总是同一个用户。用户3。如果我为艺术家使用不同的用户,为请求报价的人使用不同的用户,
$user
始终成为用户3

尽管如此,正确的用户仍能收到正确的消息。目前,这只会影响谁在
quoteReply
功能中收到正确的电子邮件

这可能是什么原因造成的?

切换

$userID = $message->value('user_id');


修复了我的问题。

尝试将
User::where('username',$recirusername)->first()更改为
User::where('username',$recirusername)->get()
。First将始终返回某种类型的用户对象,无论其是否存在。另外,您使用的是什么版本的Laravel?我目前正在使用5.4。为什么不使用Laravel通知发送电子邮件、短信或其他通知。同时更新
$user=user::where('id',$userID)->first()
$user=user::where('id',$userID)->get()这是一个旧应用程序。我没有使用很多当前的默认值。5.4不是laravel的旧版本。无论如何,laravel 5.3发布了通知。更新我的建议,让我知道会发生什么
$userID=$message->user\u id
应该做什么
$userID = $message->user_id;