草庐IT

javascript - 在 JavaScript 代码中访问 Laravel 关系

coder 2024-05-10 原文

Product 与表 productbrand 具有一对多关系“productbrand”,而 productbrand 与表 brand 具有一对一关系“brand”。表品牌有一个列,“品牌”。而且我能够访问产品的品牌。所有其他类别、用户名等都可以正常访问。

public function show(Request $request)
{
    if($request->ajax())
    {
        $id = $request->id;
        if($id)
        {
            $show = Product::where(['product_id'=>$id])->first();
            $category = $show->category->category;
            $username = $show->user->username;
            $getbrands = $show->productbrand;
            foreach($getbrands as $getbrand)
            {
                $brand=$getbrand->brand->brand;
            }
            if($show)
            {
                echo json_encode(array('status' => TRUE, 'show' => $show, 'username' => $username, 'category' => $category, 'brand' => $brand)); die;
            }
        }
    }
    echo json_encode(FALSE);die;
}

Ajax 和 jQuery:

$.ajax({
    type: "POST",
    url: "{{url('/product/show')}}",
    data: {id:id},
    success: function (data) {
        var res = $.parseJSON(data);
        if(res.status == true)
        {
            var result = 'Category: ' + res.category + '<br>' +
                         'Product by: ' + res.username + '<br>' +
                         'Brands: ' + res.brand + '<br>' +
                         'Price: ' + res.show.price + '<br>' +
                         'Price type: ' + res.show.price_type + '<br>' +
                         'Product Views: ' + res.show.views + '<br>';
            $('#result').html(result);
        }
    }
});

这样我只能得到一个品牌。我也试过下面的方法,但是失败了。

在 Controller 中:

 $getbrands = $show->productbrand;
 echo json_encode(array('status' => TRUE, 'show' => $show, 'username' => $username, 'category' => $category, 'getbrands' => $getbrands));

在 Ajax 中:

for(var i=0; i<res.getbrands.length; i++)
{
    var brands=res.getbrands[i].brand.brand; //First 'brand' is relation and second is the brand I am trying to access
}

最佳答案

为什么要声明所有这些变量:

$category = $show->category->category;
$username = $show->user->username;
$getbrands = $show->productbrand;

如果category, user, productbrand 然后brands 是与product 的模型关系,从category 中获取category,从user 中获取username 等。

而是维护与'with'的关系;

public function show(Request $request)
{
    if($request->ajax())
    {
       $id = $request->id;
       if($id)
       {
           $show = Product::where(['product_id'=>$id])->with('category')
                                                      ->with('user')
                                                      ->with('productbrand.brand')  // product has onetomany relation 'productbrand' with table productbrand and productbrand has onetoone relation 'brand' with table brand
                                                      ->first();
           if($show)
           {
               echo json_encode(array('status' => TRUE,  'show'=>$show)); die;
           }
       }
    }
  echo json_encode(FALSE);die;

在 JavaScript 中:

        if(res.status == true)
        {
            var result = 'Category: ' + res.show.category.category + '<br>' +
                         'Product by: ' + res.show.user.username + '<br>' +
                         'Price: ' + res.show.price + '<br>' +
                         'Price type: ' + res.show.price_type + '<br>' +
                         'Product Views: ' + res.show.views + '<br>';
            $('#result').html(result);
        }
    }
});

product 与 table productbrand 具有一对多关系“productbrand”,而 productbrand 与 table brand 具有一对一关系“brand”。表品牌有一列“品牌”。我并不是无法访问产品的品牌。 这样访问品牌。

var result = 'Brands: ';
for(var i=0; i<res.show.productbrand.length; i++)
{
    result += res.show.productbrand[i].brand.brand;
}

关于javascript - 在 JavaScript 代码中访问 Laravel 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38916788/

有关javascript - 在 JavaScript 代码中访问 Laravel 关系的更多相关文章

  1. c# - 为什么 C# 4.0 允许在匿名对象初始化代码中使用尾随逗号? - 2

    这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Inlinepropertyinitialisationandtrailingcomma在我的一个项目(C#4.0、VisualStudio2010)上工作时,我无意中发现了这样的代码varobj=new{field1="Test",field2=3,}编译和执行正常,没有任何错误甚至警告,并且工作方式与完全一样varobj=new{field1="Test",field2=3}为什么编译器可以容忍第一个示例中的尾部逗号?这是编译器中的错误还是此类行为确实有某种目的?谢谢

  2. c# - 将 IL 转换为 C# 代码 - 2

    我需要将IL转换为C#代码。我有一个集会,我正在阅读这个集会。我从MethodInfo获取MethodBody并且methodbody有一个方法GetILAsByteArraY()它返回一个字节数组,现在我想将此IL转换为C#代码。请帮我解决这个问题。 最佳答案 不要重新发明轮子;使用LutzRoeder的.NETReflector. 关于c#-将IL转换为C#代码,我们在StackOverflow上找到一个类似的问题: https://stackoverfl

  3. c# - 将 C# 代码翻译成 AST? - 2

    目前是否可以将C#代码转换为抽象语法树?编辑:一些澄清;我不一定期望编译器为我生成AST-解析器就可以了,尽管我想使用“官方”的东西。不幸的是,Lambda表达式是不够的,因为它们不允许我使用语句体,而这正是我正在寻找的。 最佳答案 Roslyn项目在VisualStudio2010中,让您以编程方式访问SyntaxTree,除其他事项外。SyntaxTreetree=SyntaxTree.ParseCompilationUnit(@"C#codehere");varroot=(CompilationUnitSynt

  4. c# - 如何在 XAML 中动态访问元素名称? - 2

    我有一个用户填写的XAML输入表单。我想验证这个表单。我有一个集合中的字段信息,我想遍历并检查每个字段。但是当它在字符串中时,我如何访问字段的名称,例如当fieldInformation.FieldName="CompanyName"我想检查"Field_CompanyName.Text"。伪代码:foreach(varfieldInformationin_fieldInformations){if(Field_{&fieldInformation.FieldName}.Text.Length>2){ErrorMessage.Text=String.Format("

  5. c# - 使用 Swagger 的特定状态代码的响应模型 - 2

    我正在使用Swagger记录我的RESTAPI(使用asp.netwebapi2)。有没有办法Swagger为给定api调用的每个可能响应提供响应模型?我正在使用xml注释注释状态代码响应,如下所示:///<summary>///Saveaperson///</summary>///<responsecode="200">Ok</response>///<responsecode="400">BadRequest</response>///<responsecode="

  6. c# - 用十六进制代码更改表单的背景颜色 - 2

    我有一个名为ChangeFormBackground(ColorcolorName)的方法,它使用colorname更改表单背景是方法的参数。现在,当我调用此方法时,我没有颜色名称,而是颜色的十六进制代码,我想使用该方法使用该十六进制代码更改表单的背景颜色,那我该怎么办? 最佳答案 usingSystem.Windows.Media;Colorcolor=(Color)ColorConverter.ConvertFromString("#FFDFD991");(这假定一个ARGB值)或Colorcolor=Syste

  7. c# - 如何在C#代码中获取当前项目名称? - 2

    我想在抛出异常时给自己发送一封电子邮件。使用StackFrame对象,我可以获得文件名、类名甚至抛出异常的类方法,但我还需要知道项目名称,因为我的许多ASP.NET项目具有相同的文件名、类名和方法.这是我的代码:publicstaticstringJndGetEmailTextForDebuggingExceptionError(thisExceptionEx){StackFramesf=Ex.JndGetStackFrame();stringOutputHTML="<i><b><u>ForDeveloperUseOnly:</u>

  8. c# - 内部 protected 属性(property)仍然可以从不同的程序集访问 - 2

    我正在为有关辅助功能的初学者session设置一些演示代码,我发现我能够从派生类访问内部protected属性。我错过了什么?程序集1namespaceAccessibility{classProgram{staticvoidMain(string[]args){ExampleClassc=newExampleClass();c.Go();//c.Prop1=10;}}classExampleClass:DerivedClass{publicvoidGo(){this.Prop1=10;this.Prop2=10;//this.Prop3=10;//Doesn'twork//t

  9. c# - Google.GData.Client.GDataRequestException - 身份验证在旧代码中突然失败 - 2

    在尝试验证和访问Google驱动器上的电子表格时,我突然开始遇到以下异常:UnhandledException:Google.GData.Client.GDataRequestException:Executionofauthenticationrequestreturnedunexpectedresult:404atGoogle.GData.Client.Utilities.getAuthException(TokenCollectiontokens,HttpWebResponseresponse)atGoogle.GData.Client.Utilities.QueryClient

  10. c# - 该进程无法访问该文件,因为它正被另一个进程使用 - 2

    我正在从SQLServer数据库字段获取二进制数据,并在我的应用程序具有权限的目录中本地创建文档。但是我仍然收到标题中指定的错误。我尝试了网上发布的许多建议,包括Stackoverflow上以前的帖子中建议的建议。我还使用了ProcessExplorer>FindHandle来定位锁,它没有返回任何内容,就好像文件没有被锁定一样。我正在使用下面的代码将文件保存到文件系统,然后我尝试稍后在应用程序进程中使用另一种方法将此文件复制到新位置。正是这个复制方法采用了抛出异常的新创建文件的路径。文件本身是用它的内容创建的,我可以通过Windows资源管理器打开它,没有任何问题。我是否遗漏了一些非

随机推荐

  1. c# - 如何将字符数组的一部分转换为字符串 - 2

    我想将char数组的一部分转换为字符串。最好的方法是什么。我知道我可以对整个数组执行以下操作char[]chars={'a','','s','t','r','i','n','g'};strings=newstring(chars);但是例如元素2到4呢?我也知道我可以遍历数组并提取它们,但我想知道是否有更简洁的方法。 最佳答案 使用Stringconstructoroverload它采用一个字符数组、一个索

  2. c# - jQuery post 数组 - ASP.Net MVC 4 - 2

    我今天花了大约8个小时来弄清楚这个问题。我看过很多解决方案,但无法获得相同的结果。我有一种预感,它与ASP.Net相对较新有关。这是我尝试模仿但没有成功的最新问题。https://stackoverflow.com/questions/10007722/post-array-as-json-to-mvc-controller#=HowtopostanarrayofcomplexobjectswithJSON,jQuerytoASP.NETMVCController?问题的基本概要:我有一组json对象,我想传递给我的Controller。当我传递数据时,它显示了例如3个项目,但它们的值

  3. c# - 如何在 C# WinRT/winmd 中调整图像大小? - 2

    我有一个简单的问题,但到目前为止我还没有找到答案:HowtoresizejpegimageinC#WinRT/WinMDprojectandsaveitasnewjpeg?我正在开发Windows8Metro应用程序,用于从某个站点下载每日图像并将其显示在动态磁贴上。问题是图像必须小于1024x1024且小于200kB,否则它不会显示在图block上:http://msdn.microsoft.com/en-us/library/windows/apps/hh465403.aspx如果我有更大的图像,如何调整它的大小以适合动态磁贴?我正在考虑简单的调整大小,例如width/2和heig

  4. c# - 如何设置下拉列表DataTextField显示两个数据属性字段? - 2

    我有一个下拉列表,在后面的代码中填充了数据。DataTextField属性使用以下代码设置:ddlItems.DataTextField="ItemName";我想将两个数据属性显示为DataTextField。我尝试使用以下代码,但没有用。我在网上进行了研究,但找不到如何使用两个数据属性。ddlItems.DataTextField="ItemName"+"ItemDescription";我需要使用什么代码来执行此操作? 最佳答案 您可以使用LinqToSql创建一个新的数据源,其

  5. c# - 编译 XNA 项目时无法执行请求的操作错误 - 2

    第二次编译项目时,出现以下错误信息。我必须关闭VS2010并在重新加载时编译。如果我进行了更改,那么问题又来了。"Unabletocopyfile"obj\x86\Debug\MyFile.dll".Therequestedoperationcannotbeperformedonafilewithuser-mappedsectionopen." 最佳答案 我遇到这个问题是出于另一个原因。所以我分享给那些没有成就扩展的人有这个问题在我的例子中,这是由于打开了项目设置页面。我在我的项目中使用一个类型作为一

  6. c# - 通过从当前日期减去秒数获得 DateTime - 2

    我想从日期中减去秒数,例如:假设我有1300秒的无符号整数,我想用当前日期和时间减去1,300秒,最后得到:01/13/20122:15PM(格式并不重要)。我试过:DateTimedt=newDateTime();dt.Add(newTimeSpan(0,0,ui.OnlineTime));Online.Text=dt.ToLongDateString(); 最佳答案 AddSeconds(doublevalue)DateTime方法取正负秒数:[valueparameterrepresents]anumberofwholeand

  7. c# - 如何在实际需要之前初始化 C# 静态类? - 2

    我有一个带有静态构造函数的静态类,它需要一些时间(10-15秒)来执行并完全初始化该类。为了提高性能,我决定让这个静态类显式初始化,而不是在第一次需要它时进行初始化,以便在实际需要使用时准备就绪。我的第一个想法是为该类创建一个Initialize()方法,但是由于我已经有了一个静态构造函数,所以这个方法似乎不需要做任何事情,除了是方法调用以显式初始化类而不访问其任何其他公共(public)方法或属性。拥有一个不直接执行任何操作的方法对我来说似乎不合适。然后我想我可以将代码从静态构造函数移到这个Initialize()方法中,但我也希望类在第一次需要时被初始化并且Initialize()

  8. c# - LINQ to Entities 和空字符串 - 2

    我在使用EF4.0作为其数据库后端的ASP.NET4.0Web应用程序上发生了一件很奇怪的事情。本质上,我有一个存储用户密码重置请求的表(包含byte[]类型的重置key、DateTime类型的到期时间和外键到包含stringEmail和stringName的User)。一些用户没有设置电子邮件地址,因此对于PasswordRequest请求,request.Email为null。问题来了。这工作得很好:stringu=Request["u"];stringe=Request["e"];varrequests=fromrincontext.Passwor

  9. c# - 指定要运行的 NUnit 测试 - 2

    我有一个NUnit项目,它创建了一个用于运行测试的控制台应用程序。入口点如下所示:classProgram{[STAThread]staticvoidMain(string[]args){string[]my_args={Assembly.GetExecutingAssembly().Location};intreturnCode=NUnit.ConsoleRunner.Runner.Main(my_args);if(returnCode!=0)Console.Beep();}}如果我只想运行这个测试,我可以将什么作为参数传入:[TestFixture]publicclassEmail

  10. c# - DbSet 表名 - 2

    要在EntityFramework4.0上获取数据库表名,我这样做:ObjectSetInstance.EntitySet.ToString()有没有办法在EntityFramework4.1上执行此操作? 最佳答案 DbContext和ObjectContext的扩展方法:publicstaticclassContextExtensions{publicstaticstringGetTableName<T>(thisDbContextcontext)whereT:class{ObjectContextobjectCon