我正在创建一个市场加系统。有两种不同的身份 - 客户和卖家。我有以下表格 - 用户,产品和销售商。在注册时,所有数据都存储在用户表中,其角色是客户或卖家,如果卖家,其电子邮件甚至存储在卖家表中,其中还有两列市场和城市。在作为卖家登录时,我要求市场和城市,它也被存储,之后我要求添加产品详细信息。在作为客户登录时,我要求市场和城市,我能够获取具有相同市场和城市的卖家的电子邮件,但之后我无法从产品表中获取具有相同电子邮件市场的数据和城市一样,是顾客的市场和城市。为什么呢?
这是我的客户控制员 -
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Seller;
use App\Product;
use DB;
class Customercontroller extends Controller
{
public function customerdata(Request $request)
{
$c_market=$request['c_market'];
$c_city=$request['c_city'];
$data=DB::table('sellers')->get();
$pdata=DB::table('products')->get();
$eml=DB::table('sellers')->select('email')->where(['market'=>$c_market,'city'=>$c_city])->get(); //This is working
$p=DB::table('products')->select('product')->where(['$pdata[0]->email'=>$eml])->get();
dd($p); /*But on doing this i am getting an error of Object of class stdClass could not be converted to string*/
}
}
答案 0 :(得分:0)
在您的代码$eml
中是一个对象。因此,当您在where子句中将其用作字符串时,错误正在发生。
您可以使用join clause
获得所需的结果。
DB::table('sellers')
->leftJoin('products', 'products.email', '=', 'sellers.email')
->where('sellers.market', $c_market)
->where('sellers.city', $c_city)
->get();
这将为您提供与输入市场和城市相关的所有产品。